diff options
353 files changed, 30820 insertions, 5915 deletions
diff --git a/.clang-format b/.clang-format index 3a2c39a174..237fd9ce30 100644 --- a/.clang-format +++ b/.clang-format @@ -116,6 +116,7 @@ Standard: Cpp03 --- ### ObjC specific config ### Language: ObjC +Standard: Cpp03 ObjCBlockIndentWidth: 4 # ObjCSpaceAfterProperty: false # ObjCSpaceBeforeProtocolList: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a0310f904..b111eca07d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,251 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). +## [Unreleased] + +### Added + +- OpenGL ES 2.0 renderer. +- [Visual shader editor.](https://godotengine.org/article/visual-shader-editor-back) + - New PBR output nodes. + - Conversion between Vector3 and scalar types is now automatic. + - Ability to create custom nodes via scripting. + - Ports can now be previewed. +- [3D soft body physics.](https://godotengine.org/article/soft-body) +- [3D ragdoll system.](https://godotengine.org/article/godot-ragdoll-system) +- [Constructive solid geometry in 3D.](https://godotengine.org/article/godot-gets-csg-support) +- [2D meshes and skeletal deformation.](https://godotengine.org/article/godot-gets-2d-skeletal-deform) +- [Various improvements to KinematicBody2D.](https://godotengine.org/article/godot-31-will-get-many-improvements-kinematicbody) + - Support for snapping the body to the floor. + - Support for RayCast shapes in kinematic bodies. + - Support for synchronizing kinematic movement to physics, avoiding an one-frame delay. +- WebSockets support using [libwebsockets](https://libwebsockets.org/). +- [Revamped inspector.](https://godotengine.org/article/godot-gets-new-inspector) + - Improved visualization and editing of numeric properties. + - Vector and matrix types can now be edited directly (no pop-ups). + - Subresources can now be edited directly within the same inspector. + - Layer names can now be displayed in the inspector. + - Proper editing of arrays and dictionaries. + - Ability to reset any property to its default value. +- [Improved animation editor.](https://godotengine.org/article/godot-gets-brand-new-animation-editor-cinematic-support) + - Simpler, less cluttered layout. + - New Bezier, Audio and Animation tracks. + - Several key types can be previewed directly in the track editor. + - Tracks can now be grouped and filtered on a per-node basis. + - Copying and pasting tracks between animations is now possible. + - New Capture mode to blend from a node's current value to the first key in a track. +- [Improved animation tree and new state machine.](https://godotengine.org/article/godot-gets-new-animation-tree-state-machine) + - More visual feedback in the blend tree editor. + - 1D and 2D blend spaces are now supported. + - Ability to write custom blending logic. + - Support for root motion. +- [New FileSystem dock.](https://godotengine.org/article/godot-gets-new-filesystem-dock-3-1) + - Unified view of folders and files in the same panel. + - Files can now be marked as favorites, not only folders. + - Files now have icons representing their type, or thumbnail previews when relevant. + - New search field to filter entries in the tree. +- [OpenSimplexNoise and NoiseTexture resources.](https://godotengine.org/article/simplex-noise-lands-godot-31) +- [Optional static typing in GDScript.](https://godotengine.org/article/optional-typing-gdscript) + - Does not currently improve performance, but helps write more robust code. +- Warning system in GDScript. + - Reports potential code issues such as: + - unused variables, + - standalone expressions, + - discarded return values from functions, + - unreachable code after a `return` statement, + - … + - Warnings can be disabled in the Project Settings or by writing special comments. +- [GDScript keyword `class_name` to register scripts as classes.](http://docs.godotengine.org/en/latest/getting_started/step_by_step/scripting_continued.html#register-scripts-as-classes) +- Simple expression language independent from GDScript, used by inspector boxes that accept numeric values. + - Can also be used in projects. +- C# projects can now be exported for Windows, Linux, and macOS targets. +- The `server` platform is back as it was in Godot 2.1. + - It is now again possible to run a headless Godot instance on Linux. +- Support for BPTC texture compression on desktop platforms. +- New properties for SpatialMaterial. + - Dithering-based distance fade, for fading materials without making them transparent. + - Disable ambient light on a per-material basis. +- Option to link Mono statically on Windows. +- Unified class and reference search in the editor. +- Revamped TileSet editor with support for undo/redo operations. +- Various quality-of-life improvements to the Polygon2D and TextureRegion editors. +- RandomNumberGenerator class that allows for multiple instances at once. +- Array methods `min()` and `max()` to return the smallest and largest value respectively. +- Dictionary method `get(key[, default])` where `default` is returned if the key does not exist. +- Node method `print_tree_pretty()` to print a graphical view of the scene tree. +- String methods `trim_prefix()`, `trim_suffix()`, `lstrip()`, `rstrip()`. +- OS methods: + - `get_system_time_msecs()`: Return the system time with milliseconds. + - `get_audio_driver_name()` and `get_audio_driver_count()` to query audio driver information. + - `get_video_driver_count()` and `get_video_driver_name()` to query renderer information. + - `center_window()`: Center the window on the screen. + - `move_window_to_foreground()`: Move the window to the foreground. +- StreamPeerTCP method `set_no_delay()` to enable the `TCP_NODELAY` option. +- EditorPlugin method `remove_control_from_container()`. +- Ability to set Godot windows as "always on top". +- Ability to create windows with per-pixel transparency. +- New GLSL built-in functions in the shader language: + - `radians()` + - `degrees()` + - `asinh()` + - `acosh()` + - `atanh()` + - `exp2()` + - `log2()` + - `roundEven()` +- New command-line options: + - `--build-solutions`: Build C# solutions without starting the editor. + - `--print-fps`: Display frames per second to standard output. + - `--quit`: Quit the engine after the first main loop iteration. +- Debugger button to copy error messages. +- Support for `.escn` scenes has been added for use with the new Blender exporter. +- It is now possible to scale an OBJ mesh when importing. +- `popup_closed` signal for `ColorPickerButton`. +- Methods that are deprecated can now print warnings. +- Input actions can now provide an analog value. +- Input actions can now be mapped to either a specific device or all devices. +- DNS resolution for high-level networking. +- Servers can now kick/disconnect peers in high-level networking. +- Servers can now access IP and port information of peers in high-level networking. +- High-level multiplayer API decoupled from SceneTree (see `SceneTree.multiplayer_api`/`SceneTree.custom_multiplayer_api`), can now be extended. +- `Input.set_default_cursor_shape()` to change the default shape in the viewport. +- Custom cursors can now be as large as 256×256 (needed to be exactly 32×32 before). +- Support for radio-looking items with icon in `PopupMenu`s. +- Drag and drop to rearrange Editor docks. +- TileSet's `TileMode` is now exposed to GDScript. +- `OS.get_ticks_usec()` is now exposed to GDScript. +- Normals can now be flipped when generated via `SurfaceTool`. +- TextureProgress bars can now be bilinear (extending in both directions). +- The character used for masking secrets in LineEdit can now be changed. +- Improved DynamicFont: + - DynamicFonts can now use high-quality outlines generated by FreeType. + - DynamicFonts can now have their anti-aliasing disabled. + - DynamicFonts can now have their hinting tweaked ("Normal", "Light" or "None"). + - Colored glyphs such as emoji are now supported. +- Universal translation of touch input to mouse input. +- AudioStreamPlayer, AudioStreamPlayer2D, and AudioStreamPlayer3D now have a pitch scale property. +- Support for MIDI input. +- `GROW_DIRECTION_BOTH` for Controls. +- Selected tiles can be moved in the tile map editor. +- The editor can now be configured to display the project window on the previous or next monitor (relative to the editor). + - If either end is reached, then the project will start on the last or first monitor (respectively). +- Signal in VideoPlayer to notify when the video finished playing. +- `Image.bumpmap_to_normalmap()` to convert bump maps to normal maps. +- `File.get_path()` and `File.get_path_absolute()`. +- Unselected tabs in the editor now have a subtle background for easier identification. +- The depth fog's end distance is now configurable independently of the far plane distance. +- The alpha component of the fog color can now be used to control fog density. +- The 3D editor's information panel now displays the camera's coordinates. +- New options to hide the origin and viewport in the 2D editor. +- Improved 3D editor grid: + - The grid size and number of subdivisions can now be configured. + - Its primary and secondary colors can now also be changed. +- <kbd>Ctrl</kbd> now toggles snapping in the 3D viewport. +- Find & replace in files (<kbd>Ctrl + Shift + F</kbd> by default). +- Batch node renaming tool (<kbd>Ctrl + F2</kbd> by default). +- More editor scaling options to support HiDPI displays. +- Type icons can now be enabled in the editor again. +- Buttons in the editor to open common directories in the OS file manager: + - project data directory, + - user data directory, + - user settings directory. +- Projects can now be sorted by name or modification date in the project manager. +- Projects can now be imported from ZIP archives in the project manager. +- Improved autocompletion. + - Keywords are now present in autocompletion results. +- `editor` and `standalone` feature tags to check whether the project is running from an editor or non-editor binary. +- `android_add_asset_dir("...")` method to Android module Gradle build configuration. +- **iOS:** Support for exporting to the iPhone X. +- **iOS:** Readded support for in-app purchases. + +### Changed + +- [Built-in vector types now use copy-on-write mode as originally intended](https://godotengine.org/article/why-we-broke-your-pr), resulting in increased engine performance. +- The [mbedtls](https://tls.mbed.org/) library is now used instead of OpenSSL. +- SSL certificates are now bundled in exported projects unless a custom bundle is specified. +- Improved buffer writing performance on Windows and Linux. +- Removed many debugging prints in the console. +- Export templates now display an error dialog if no project was found when starting. +- DynamicFont oversampling is now enabled by default. +- Nodes' internal logic now consistently use internal physics processing. +- Allow attaching and clearing scripts on multiple nodes at once. +- Default values are no longer saved in scene and resource files. +- The selection rectangle of 2D nodes is now hidden when not pertinent (no more rectangle for collision shapes). +- SSE2 is now enabled in libsquish, resulting in improved S3TC encoding performance. +- Tangent and binormal coordinates are now more consistent across mesh types (primitive/imported), resulting in more predictable normal map and depth map appearance. +- Better defaults for 3D scenes. + - The default procedural sky now has a more neutral blue tone. + - The default SpatialMaterial now has a roughness value of 1 and metallic value of 0. + - The fallback material now uses the same values as the default SpatialMaterial. +- Text editor themes are now sorted alphabetically in the selection dropdown. +- The 3D manipulator gizmo now has a smoother, more detailed appearance. +- The 3D viewport menu button now has a background to make it easier to read. +- Controls inside containers are no longer movable or resizable but can still be selected. +- The `is` GDScript keyword can now be used to compare a value against built-in types. +- Named enums in GDScript no longer create script constants. + - This means `enum Name { VALUE }` must now be accessed with `Name.VALUE` instead of `VALUE`. +- Shadowing variables from parent scopes is no longer allowed in GDScript. +- Function parameters' default values can no longer depend on other parameters in GDScript. +- Indentation guides are now displayed in a more subtle way in the script editor. + - Indentation guides are now displayed when indenting using spaces. +- Multi-line strings are now highlighted as strings rather than as comments in the script editor. + - This is because GDScript does not officially support multiline comments. +- Increased the script editor's line spacing (4 pixels → 6 pixels). +- Increased the caret width in the script editor (1 pixel → 2 pixels). +- The project manager window is now resized to match the editor scale. +- The asset library now makes use of threading, making loading more responsive. +- Line spacing in the script editor, underlines and caret widths are now resized to match the editor scale. +- Replaced editor icons for checkboxes and radio buttons with simpler designs. +- Tweaked the editor's success, error, and warning text colors for better readability and consistency. +- **Android:** Custom permissions are now stored in an array and their amount is no longer limited to 20. + - Custom permissions will have to be redefined in projects imported from older versions. +- **Android:** Provide error details when an in-app purchase fails. +- **Linux:** `OS.alert()` now uses Zenity or KDialog if available instead of xmessage. +- **Mono:** Display stack traces for inner exceptions. +- **Mono:** Bundle `mscorlib.dll` with Godot to improve portability. + +### Removed + +- **macOS:** Support for 32-bit and fat binaries. + +### Fixed + +- [`move_and_slide()` now behaves differently at low velocities](https://github.com/godotengine/godot/issues/21683), which makes it function as originally intended. +- AnimatedSprite2D's `animation_finished` signal is now triggered at the end of the animation, instead of as soon as the last frame displays. +- Audio buses can now be removed in the editor while they are used by AudioStreamPlayer2D/3D nodes. +- Do not show the project manager unless no project was found at all. +- The animation editor time offset indicator no longer "walks" when resizing the editor. +- Allow creation of a built-in GDScript file even if the filename suggested already exists. +- Show tooltips in the editor when physics object picking is disabled. +- Fix a serialization bug that could cause TSCN files to grow very large. +- Gizmos are now properly hidden on scene load if the object they control is hidden. +- Camera gizmos in the 3D viewport no longer look twice as wide as they actually are. +- Copy/pasting from the editor on X11 will now work more reliably. +- `libgcc_s` and `libstdc++` are now linked statically for better Linux binary portability. +- The FPS cap set by `force_fps` in the Project Settings is no longer applied to the editor. + - Low FPS caps no longer cause the editor to feel sluggish. +- hiDPI is now detected and used if needed in the project manager. +- The Visual Studio Code external editor option now recognizes more binary names such as `code-oss`, making detection more reliable. +- The `-ffast-math` flag is no longer used when compiling Godot, resulting in increased floating-point determinism. +- Fix spelling of `apply_torque_impulse()` and deprecate the misspelled method. +- Remove spurious errors when using a PanoramaSky without textures. +- The lightmap baker will now use all available cores on Windows. +- Bullet physics now correctly calculates effective gravity on KinematicBodies. +- Setting the color `v` member now correctly sets the `s` member. +- RichTextLabels now correctly determine the baseline for all fonts. +- SpinBoxes now correctly calculate their initial size. +- OGG streams now correctly signal the end of playback. +- Android exporter no longer writes unnecessary permissions to the exported APK. +- Debugger "focus stealing" now works more reliably. +- Subresources are now always saved when saving a scene. +- Many fixes related to importers (glTF, Collada, audio), physics (Bullet), Mono/C#, GDNative, Android/iOS. +- **Mono:** Many fixes and improvements to C# support (including a `[Signal]` attribute). +- **WebAssembly:** Supply proper CORS headers. + +### Security + +- Fixed a security issue relating to deserializing Variants. + ## [3.0] - 2018-01-29 ### Added @@ -137,4 +382,5 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). - HTML5 export using asm.js. - Only WebAssembly is supported now, since all browsers supporting WebGL 2.0 also support WebAssembly. +[Unreleased]: https://github.com/godotengine/godot/compare/3.0-stable...HEAD [3.0]: https://github.com/godotengine/godot/compare/2.1-stable...3.0-stable diff --git a/CODEOWNERS b/CODEOWNERS index 27315f2c9d..3a973a100a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -2,36 +2,57 @@ # Each line is a file pattern followed by one or more owners. # Owners can be @users, @org/teams or emails -core/* @reduz - -doc/* @godotengine/documentation - -drivers/gles2/* @karroffel -drivers/gles3/* @reduz - -editor/icons/* @djrm - -main/* @reduz - -misc/* @akien-mga - -modules/bullet/* @AndreaCatania -modules/enet/* @godotengine/network -modules/gdnative/* @karroffel -modules/gdscript/* @reduz @vnen @bojidar-bg -modules/mbedtls/* @godotengine/network -modules/mobile_vr/* @BastiaanOlij -modules/mono/* @neikeq -modules/regex/* @LeeZH -modules/upnp/* @godotengine/network -modules/websocket/* @godotengine/network - -platform/javascript/* @eska014 -platform/uwp/* @vnen - -scene/main/* @reduz - -server/physics* @reduz @AndreaCatania -server/visual* @reduz @karroffel - -thirdparty/* @akien-mga +/core/ @reduz + +/doc/ @godotengine/documentation +doc_classes/* @godotengine/documentation + +# Rendering +/drivers/gl_context/ @reduz +/drivers/gles2/ @reduz +/drivers/gles3/ @reduz + +# Audio +/drivers/alsa/ @marcelofg55 +/drivers/alsamidi/ @marcelofg55 +/drivers/coreaudio/ @marcelofg55 +/drivers/coremidi/ @marcelofg55 +/drivers/pulseaudio/ @marcelofg55 +/drivers/rtaudio/ @marcelofg55 +/drivers/wasapi/ @marcelofg55 +/drivers/winmidi/ @marcelofg55 +/drivers/xaudio2/ @marcelofg55 + +# Porting +/drivers/unix/ @reduz @hpvb +/drivers/windows/ @reduz @hpvb + +/editor/icons/ @djrm + +/main/ @reduz + +/misc/ @akien-mga + +/modules/bullet/ @AndreaCatania +/modules/csg/ @reduz @BastiaanOlij +/modules/enet/ @godotengine/network +/modules/gdnative/ @karroffel +/modules/gdnative/*arvr/ @BastiaanOlij +/modules/gdscript/ @reduz @vnen @bojidar-bg +/modules/mbedtls/ @godotengine/network +/modules/mobile_vr/ @BastiaanOlij +/modules/mono/ @neikeq +/modules/opensimplex/ @JFonS +/modules/regex/ @LeeZH +/modules/upnp/ @godotengine/network +/modules/websocket/ @godotengine/network + +/platform/javascript/ @eska014 +/platform/uwp/ @vnen + +/scene/main/ @reduz + +/server/physics*/ @reduz @AndreaCatania +/server/visual*/ @reduz @karroffel + +/thirdparty/ @akien-mga @@ -17,7 +17,6 @@ generous deed immortalized in the next stable release of Godot Engine. ## Gold sponsors Gamblify <https://www.gamblify.com> - GameDev.TV <https://gdev.tv/godot> Image Campus <https://www.imagecampus.edu.ar> ## Mini sponsors @@ -30,6 +29,7 @@ generous deed immortalized in the next stable release of Godot Engine. Christoph Woinke Edward Flick GameDev.net + GameDev.tv Hein-Pieter van Braam Jamal Alyafei Javary Games @@ -37,6 +37,8 @@ generous deed immortalized in the next stable release of Godot Engine. Justin Arnold Kyle Szklenski Leona Eden + Leonard Meagher + Ludosity AB Matthieu Huvé Maxim Karsten Mike King @@ -56,30 +58,34 @@ generous deed immortalized in the next stable release of Godot Engine. ## Gold donors Asdf + Brandon Waite cheese65536 David Gehrig Edward E + Florian Krick K9Kraken Manuele Finocchiaro Nathanael Beisiegel Officine Pixel S.n.c. Retro Village - Valorware Zashi Zaven Muradyan 13MHz Allen Schade Andreas Schüle + Asher Glick Austen McRae + Daniel James Daniel Lynn David Giardi Florian Breisch Gary Oberbrunner Gero Jay Horton - Johannes Wuensch + Jon Smith Jon Woodward + Jorge Bernal Joshua Lesperance Justo Delgado Baudà Krzysztof Dluzniewski @@ -89,8 +95,10 @@ generous deed immortalized in the next stable release of Godot Engine. paul gruenbacher Paul LaMotte Rob Messick + Scott Wadden Sergey Svenne Krap + Tom Langwaldt William Wold Wyatt Goodin Xananax @@ -107,10 +115,11 @@ generous deed immortalized in the next stable release of Godot Engine. Joan Fons John Krzysztof Jankowski - Laurence Bannister Lucas Ferreira Franca Markus Wiesner Nathan Lundquist + Pascal Grüter + Petr Malac Rami Robert Willes Robin Arys @@ -123,10 +132,8 @@ generous deed immortalized in the next stable release of Godot Engine. Alessandra Pereyra Alexey Dyadchenko - Amanda Haldy Benjamin W Flint Chau Siu Hung - Chris Brown Chris Goddard Chris Petrich Christian Leth Jeppesen @@ -139,13 +146,15 @@ generous deed immortalized in the next stable release of Godot Engine. Eric Monson Ethan Bennis Eugenio Hugo Salgüero Jáñez - Eulogio Enamorado Pallares flesk + gavlig GGGames.org + Giles Montgomery Giovanni Solimeno Guilherme Felipe de C. G. da Silva Heath Hayes Hysteria + Jalal Chaabane Jeppe Zapp Jose Malheiro Juan T Chen @@ -156,6 +165,7 @@ generous deed immortalized in the next stable release of Godot Engine. Marius Kamm Martin Eigel Marvin + Matt Eunson Max R.R. Collada Nick Nikitin Oliver Dick @@ -166,26 +176,28 @@ generous deed immortalized in the next stable release of Godot Engine. Ruben Soares Luis Samuel Judd Sofox + spilldata Stoned Xander Tobias Bocanegra WytRabbit Xavier Fumado Beltran - Zachariah Gibbons ## Silver donors 1D_Inc - 2drealms Adam Brunnmeier Adam Carr + Adam Nakonieczny Adam Smeltzer Adisibio Alder Stefano Alessandro Senese Alexander Gillberg Alexander Koppe + Alice Robinson Andreas Krampitz Anthony Bongiovanni + Arbor Interactive Arthur S. Muszynski Artur Barichello Aubrey Falconer @@ -200,19 +212,25 @@ generous deed immortalized in the next stable release of Godot Engine. Bryan Stevenson Carl Winder Carwyn Edwards + Chris Brown Chris Chapin Christian Baune Christian Winter + Christoffer Sundbom + Chris Wilson Collin Shooltz + Connor Hill Daniel Johnson - Daniel Kaplan DanielMaximiano + Daniel Reed David Cravens David May Dominik Wetzel DOXA Edward Herbert + Egon Elbre Elmeri '- Duy Kevin Nguyen + Emanuel Kotzayan Eric Martini Eric McCarthy Eric Williams @@ -232,11 +250,13 @@ generous deed immortalized in the next stable release of Godot Engine. Igor Buzatovic Jaime Ruiz-Borau Vizárraga Jako Danar + James A F Manley Jeff Hungerford Jeremy Kahn + Jesse Dubay Joao Senerchia Joel Fivat - Johan Lindberg + Johannes Wuensch Jonas Rudlang Jonas Yamazaki Jonathan G @@ -250,11 +270,11 @@ generous deed immortalized in the next stable release of Godot Engine. Juan Negrier Judd Julian Murgia - Justin Luk KC Chan Kevin Boyer - Kevin van Rooijen + Kiyohiro Kawamura (kyorohiro) Klagsam + KR McGinley KsyTek Games Kuan Cheang kycho @@ -269,7 +289,6 @@ generous deed immortalized in the next stable release of Godot Engine. Matt Welke Maxwell Mertcan Mermerkaya - mhilbrunner Michael Dürwald Michael Gringauz Michael Labbe @@ -284,9 +303,7 @@ generous deed immortalized in the next stable release of Godot Engine. Niclas Eriksen Nicolás Montaña Nicolas SAN AGUSTIN - nitenook Pan Ip - Pascal Grüter Patrick Nafarrete Paul Gieske Paul Mason @@ -298,37 +315,42 @@ generous deed immortalized in the next stable release of Godot Engine. Prokhorenko Leonid Psyagnostic Rafael - rayos Rémi Verschelde Ricardo Alcantara Richman Stewart + Robert Farr (Larington) Roger Burgess Roger Smith Roland RzÄ…sa Roman Tinkov + Ryan Cheung + Ryan Hentz Sasori Olkof Sebastian Michailidis Shane Spoor + Simon Wenner Sootstone Theo Cranmore Théo Hay Thibault Barbaroux Thomas Bell Thomas Holmes + Thomas Kelly Thomas Kurz tiansheng li Tim Tim Drumheller Tom Larrow - Troy Austin + Torsten Crass Tryggve Sollid Tyler Stafos UltyX Vaiktorg Victor Viktor Ferenczi - Vladimir Soukup waka nya + Wayne Haak + werner mendizabal William Gervasio William Hogben Wout Standaert diff --git a/SConstruct b/SConstruct index 57fa305a15..2c79665465 100644 --- a/SConstruct +++ b/SConstruct @@ -2,11 +2,13 @@ EnsureSConsVersion(0, 98, 1) -import string -import os -import os.path +# System import glob +import os +import string import sys + +# Local import methods import gles_builders from platform_methods import run_in_subprocess @@ -27,7 +29,7 @@ for x in sorted(glob.glob("platform/*")): continue tmppath = "./" + x - sys.path.append(tmppath) + sys.path.insert(0, tmppath) import detect if (os.path.exists(x + "/export/export.cpp")): @@ -86,13 +88,6 @@ env_base.split_modules = False env_base.module_version_string = "" env_base.msvc = False -# To decide whether to rebuild a file, use the MD5 sum only if the timestamp has changed. -# http://scons.org/doc/production/HTML/scons-user/ch06.html#idm139837621851792 -env_base.Decider('MD5-timestamp') -# Use cached implicit dependencies by default. Can be overridden by specifying `--implicit-deps-changed` in the command line. -# http://scons.org/doc/production/HTML/scons-user/ch06s04.html -env_base.SetOption('implicit_cache', 1) - env_base.__class__.android_add_maven_repository = methods.android_add_maven_repository env_base.__class__.android_add_flat_dir = methods.android_add_flat_dir env_base.__class__.android_add_dependency = methods.android_add_dependency @@ -130,7 +125,6 @@ customs = ['custom.py'] profile = ARGUMENTS.get("profile", False) if profile: - import os.path if os.path.isfile(profile): customs.append(profile) elif os.path.isfile(profile + ".py"): @@ -210,7 +204,7 @@ for k in platform_opts.keys(): for x in module_list: module_enabled = True tmppath = "./modules/" + x - sys.path.append(tmppath) + sys.path.insert(0, tmppath) import config enabled_attr = getattr(config, "is_enabled", None) if (callable(enabled_attr) and not config.is_enabled()): @@ -233,6 +227,16 @@ env_base.platform_apis = platform_apis if (env_base['target'] == 'debug'): env_base.Append(CPPDEFINES=['DEBUG_MEMORY_ALLOC','DISABLE_FORCED_INLINE']) + # The two options below speed up incremental builds, but reduce the certainty that all files + # will properly be rebuilt. As such, we only enable them for debug (dev) builds, not release. + + # To decide whether to rebuild a file, use the MD5 sum only if the timestamp has changed. + # http://scons.org/doc/production/HTML/scons-user/ch06.html#idm139837621851792 + env_base.Decider('MD5-timestamp') + # Use cached implicit dependencies by default. Can be overridden by specifying `--implicit-deps-changed` in the command line. + # http://scons.org/doc/production/HTML/scons-user/ch06s04.html + env_base.SetOption('implicit_cache', 1) + if (env_base['no_editor_splash']): env_base.Append(CPPDEFINES=['NO_EDITOR_SPLASH']) @@ -250,8 +254,8 @@ elif env_base['p'] != "": env_base["platform"] = selected_platform if selected_platform in platform_list: - - sys.path.append("./platform/" + selected_platform) + tmppath = "./platform/" + selected_platform + sys.path.insert(0, tmppath) import detect if "create" in dir(detect): env = detect.create(env_base) @@ -377,7 +381,7 @@ if selected_platform in platform_list: suffix += env.extra_suffix - sys.path.remove("./platform/" + selected_platform) + sys.path.remove(tmppath) sys.modules.pop('detect') env.module_list = [] @@ -387,7 +391,7 @@ if selected_platform in platform_list: if not env['module_' + x + '_enabled']: continue tmppath = "./modules/" + x - sys.path.append(tmppath) + sys.path.insert(0, tmppath) env.current_module = x import config # can_build changed number of arguments between 3.0 (1) and 3.1 (2), diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index e81468e888..f17d7372e2 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -592,17 +592,17 @@ struct Time { }; */ -int _OS::get_static_memory_usage() const { +uint64_t _OS::get_static_memory_usage() const { return OS::get_singleton()->get_static_memory_usage(); } -int _OS::get_static_memory_peak_usage() const { +uint64_t _OS::get_static_memory_peak_usage() const { return OS::get_singleton()->get_static_memory_peak_usage(); } -int _OS::get_dynamic_memory_usage() const { +uint64_t _OS::get_dynamic_memory_usage() const { return OS::get_singleton()->get_dynamic_memory_usage(); } diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index a4b4629037..1c8b985d73 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -283,9 +283,9 @@ public: uint64_t get_system_time_secs() const; uint64_t get_system_time_msecs() const; - int get_static_memory_usage() const; - int get_static_memory_peak_usage() const; - int get_dynamic_memory_usage() const; + uint64_t get_static_memory_usage() const; + uint64_t get_static_memory_peak_usage() const; + uint64_t get_dynamic_memory_usage() const; void delay_usec(uint32_t p_usec) const; void delay_msec(uint32_t p_msec) const; diff --git a/core/image.cpp b/core/image.cpp index 4fc3b4becb..3d48db872c 100644 --- a/core/image.cpp +++ b/core/image.cpp @@ -1789,7 +1789,7 @@ Error Image::decompress() { _image_decompress_pvrtc(this); else if (format == FORMAT_ETC && _image_decompress_etc1) _image_decompress_etc1(this); - else if (format >= FORMAT_ETC2_R11 && format <= FORMAT_ETC2_RGB8A1 && _image_decompress_etc1) + else if (format >= FORMAT_ETC2_R11 && format <= FORMAT_ETC2_RGB8A1 && _image_decompress_etc2) _image_decompress_etc2(this); else return ERR_UNAVAILABLE; @@ -2632,6 +2632,9 @@ void Image::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "_set_data", "_get_data"); + BIND_CONSTANT(MAX_WIDTH); + BIND_CONSTANT(MAX_HEIGHT); + BIND_ENUM_CONSTANT(FORMAT_L8); //luminance BIND_ENUM_CONSTANT(FORMAT_LA8); //luminance-alpha BIND_ENUM_CONSTANT(FORMAT_R8); diff --git a/core/image.h b/core/image.h index 3604580e98..b23f8cac46 100644 --- a/core/image.h +++ b/core/image.h @@ -52,14 +52,14 @@ typedef Ref<Image> (*ImageMemLoadFunc)(const uint8_t *p_png, int p_size); class Image : public Resource { GDCLASS(Image, Resource); +public: + static SavePNGFunc save_png_func; + enum { MAX_WIDTH = 16384, // force a limit somehow MAX_HEIGHT = 16384 // force a limit somehow }; -public: - static SavePNGFunc save_png_func; - enum Format { FORMAT_L8, //luminance diff --git a/core/io/file_access_pack.cpp b/core/io/file_access_pack.cpp index 43fedc5238..c97b8cafac 100644 --- a/core/io/file_access_pack.cpp +++ b/core/io/file_access_pack.cpp @@ -490,6 +490,10 @@ size_t DirAccessPack::get_space_left() { return 0; } +String DirAccessPack::get_filesystem_type() const { + return "PCK"; +} + DirAccessPack::DirAccessPack() { current = PackedData::get_singleton()->root; diff --git a/core/io/file_access_pack.h b/core/io/file_access_pack.h index 04610bed57..a90672ce26 100644 --- a/core/io/file_access_pack.h +++ b/core/io/file_access_pack.h @@ -221,6 +221,8 @@ public: size_t get_space_left(); + virtual String get_filesystem_type() const; + DirAccessPack(); ~DirAccessPack(); }; diff --git a/core/io/pck_packer.cpp b/core/io/pck_packer.cpp index 36bd429bc0..8920bbfb81 100644 --- a/core/io/pck_packer.cpp +++ b/core/io/pck_packer.cpp @@ -175,7 +175,7 @@ Error PCKPacker::flush(bool p_verbose) { printf("\n"); file->close(); - memdelete(buf); + memdelete_arr(buf); return OK; }; diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp index e27dea37d6..4d4134b745 100644 --- a/core/io/resource_format_binary.cpp +++ b/core/io/resource_format_binary.cpp @@ -342,7 +342,7 @@ Error ResourceInteractiveLoaderBinary::parse_variant(Variant &r_v) { int erindex = f->get_32(); if (erindex < 0 || erindex >= external_resources.size()) { - WARN_PRINT("Broken external resource! (index out of size"); + WARN_PRINT("Broken external resource! (index out of size)"); r_v = Variant(); } else { diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index b8bc24c1de..02e4d8dc7a 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -53,6 +53,12 @@ Error ResourceInteractiveLoader::wait() { return err; } +ResourceInteractiveLoader::~ResourceInteractiveLoader() { + if (path_loading != String()) { + ResourceLoader::_remove_from_loading_map(path_loading); + } +} + bool ResourceFormatLoader::recognize_path(const String &p_path, const String &p_for_type) const { String extension = p_path.get_extension(); @@ -280,6 +286,39 @@ RES ResourceLoader::_load(const String &p_path, const String &p_original_path, c return RES(); } +bool ResourceLoader::_add_to_loading_map(const String &p_path) { + + bool success; + if (loading_map_mutex) { + loading_map_mutex->lock(); + } + + if (loading_map.has(p_path)) { + success = false; + } else { + loading_map[p_path] = true; + success = true; + } + + if (loading_map_mutex) { + loading_map_mutex->unlock(); + } + + return success; +} + +void ResourceLoader::_remove_from_loading_map(const String &p_path) { + if (loading_map_mutex) { + loading_map_mutex->lock(); + } + + loading_map.erase(p_path); + + if (loading_map_mutex) { + loading_map_mutex->unlock(); + } +} + RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p_no_cache, Error *r_error) { if (r_error) @@ -292,6 +331,15 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p local_path = ProjectSettings::get_singleton()->localize_path(p_path); if (!p_no_cache) { + + { + bool success = _add_to_loading_map(local_path); + if (!success) { + ERR_EXPLAIN("Resource: '" + local_path + "' is already being loaded. Cyclic reference?"); + ERR_FAIL_V(RES()); + } + } + //lock first if possible if (ResourceCache::lock) { ResourceCache::lock->read_lock(); @@ -310,7 +358,7 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p if (ResourceCache::lock) { ResourceCache::lock->read_unlock(); } - print_verbose("Loading resource: " + local_path + " (cached)"); + _remove_from_loading_map(local_path); return res; } } @@ -322,12 +370,21 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p bool xl_remapped = false; String path = _path_remap(local_path, &xl_remapped); - ERR_FAIL_COND_V(path == "", RES()); + if (path == "") { + if (!p_no_cache) { + _remove_from_loading_map(local_path); + } + ERR_EXPLAIN("Remapping '" + local_path + "'failed."); + ERR_FAIL_V(RES()); + } print_verbose("Loading resource: " + path); RES res = _load(path, local_path, p_type_hint, p_no_cache, r_error); if (res.is_null()) { + if (!p_no_cache) { + _remove_from_loading_map(local_path); + } return RES(); } if (!p_no_cache) @@ -346,6 +403,10 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p } #endif + if (!p_no_cache) { + _remove_from_loading_map(local_path); + } + if (_loaded_callback) { _loaded_callback(res, p_path); } @@ -394,19 +455,36 @@ Ref<ResourceInteractiveLoader> ResourceLoader::load_interactive(const String &p_ else local_path = ProjectSettings::get_singleton()->localize_path(p_path); - if (!p_no_cache && ResourceCache::has(local_path)) { + if (!p_no_cache) { - print_verbose("Loading resource: " + local_path + " (cached)"); - Ref<Resource> res_cached = ResourceCache::get(local_path); - Ref<ResourceInteractiveLoaderDefault> ril = Ref<ResourceInteractiveLoaderDefault>(memnew(ResourceInteractiveLoaderDefault)); + bool success = _add_to_loading_map(local_path); + if (!success) { + ERR_EXPLAIN("Resource: '" + local_path + "' is already being loaded. Cyclic reference?"); + ERR_FAIL_V(RES()); + } - ril->resource = res_cached; - return ril; + if (ResourceCache::has(local_path)) { + + print_verbose("Loading resource: " + local_path + " (cached)"); + Ref<Resource> res_cached = ResourceCache::get(local_path); + Ref<ResourceInteractiveLoaderDefault> ril = Ref<ResourceInteractiveLoaderDefault>(memnew(ResourceInteractiveLoaderDefault)); + + ril->resource = res_cached; + ril->path_loading = local_path; + return ril; + } } bool xl_remapped = false; String path = _path_remap(local_path, &xl_remapped); - ERR_FAIL_COND_V(path == "", Ref<ResourceInteractiveLoader>()); + if (path == "") { + if (!p_no_cache) { + _remove_from_loading_map(local_path); + } + ERR_EXPLAIN("Remapping '" + local_path + "'failed."); + ERR_FAIL_V(RES()); + } + print_verbose("Loading resource: " + path); bool found = false; @@ -418,14 +496,21 @@ Ref<ResourceInteractiveLoader> ResourceLoader::load_interactive(const String &p_ Ref<ResourceInteractiveLoader> ril = loader[i]->load_interactive(path, local_path, r_error); if (ril.is_null()) continue; - if (!p_no_cache) + if (!p_no_cache) { ril->set_local_path(local_path); + ril->path_loading = local_path; + } + if (xl_remapped) ril->set_translation_remapped(true); return ril; } + if (!p_no_cache) { + _remove_from_loading_map(local_path); + } + if (found) { ERR_EXPLAIN("Failed loading resource: " + path); } else { @@ -833,6 +918,27 @@ void ResourceLoader::remove_custom_loaders() { } } +Mutex *ResourceLoader::loading_map_mutex = NULL; +HashMap<String, int> ResourceLoader::loading_map; + +void ResourceLoader::initialize() { +#ifndef NO_THREADS + loading_map_mutex = Mutex::create(); +#endif +} + +void ResourceLoader::finalize() { +#ifndef NO_THREADS + const String *K = NULL; + while ((K = loading_map.next(K))) { + ERR_PRINTS("Exited while resource is being loaded: " + *K); + } + loading_map.clear(); + memdelete(loading_map_mutex); + loading_map_mutex = NULL; +#endif +} + ResourceLoadErrorNotify ResourceLoader::err_notify = NULL; void *ResourceLoader::err_notify_ud = NULL; diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h index 6c0e9d5554..622b74a998 100644 --- a/core/io/resource_loader.h +++ b/core/io/resource_loader.h @@ -40,6 +40,8 @@ class ResourceInteractiveLoader : public Reference { GDCLASS(ResourceInteractiveLoader, Reference); + friend class ResourceLoader; + String path_loading; protected: static void _bind_methods(); @@ -54,6 +56,7 @@ public: virtual Error wait(); ResourceInteractiveLoader() {} + ~ResourceInteractiveLoader(); }; class ResourceFormatLoader : public Reference { @@ -110,12 +113,18 @@ class ResourceLoader { static SelfList<Resource>::List remapped_list; friend class ResourceFormatImporter; + friend class ResourceInteractiveLoader; //internal load function static RES _load(const String &p_path, const String &p_original_path, const String &p_type_hint, bool p_no_cache, Error *r_error); static ResourceLoadedCallback _loaded_callback; static Ref<ResourceFormatLoader> _find_custom_resource_format_loader(String path); + static Mutex *loading_map_mutex; + static HashMap<String, int> loading_map; + + static bool _add_to_loading_map(const String &p_path); + static void _remove_from_loading_map(const String &p_path); public: static Ref<ResourceInteractiveLoader> load_interactive(const String &p_path, const String &p_type_hint = "", bool p_no_cache = false, Error *r_error = NULL); @@ -170,6 +179,9 @@ public: static void remove_custom_resource_format_loader(String script_path); static void add_custom_loaders(); static void remove_custom_loaders(); + + static void initialize(); + static void finalize(); }; #endif diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp index a0556ae839..b885a06834 100644 --- a/core/math/a_star.cpp +++ b/core/math/a_star.cpp @@ -260,8 +260,8 @@ bool AStar::_solve(Point *begin_point, Point *end_point) { } // Check open list - SelfList<Point> *least_cost_point = NULL; - real_t least_cost = 1e30; + SelfList<Point> *least_cost_point = open_list.first(); + real_t least_cost = Math_INF; // TODO: Cache previous results for (SelfList<Point> *E = open_list.first(); E; E = E->next()) { diff --git a/core/math/matrix3.cpp b/core/math/basis.cpp index 0aa67078fb..8e4eacd9a6 100644 --- a/core/math/matrix3.cpp +++ b/core/math/basis.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* matrix3.cpp */ +/* basis.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -28,7 +28,7 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "matrix3.h" +#include "basis.h" #include "core/math/math_funcs.h" #include "core/os/copymem.h" diff --git a/core/math/matrix3.h b/core/math/basis.h index e7d6ab4522..128e56b494 100644 --- a/core/math/matrix3.h +++ b/core/math/basis.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* matrix3.h */ +/* basis.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -31,8 +31,8 @@ // Circular dependency between Vector3 and Basis :/ #include "core/math/vector3.h" -#ifndef MATRIX3_H -#define MATRIX3_H +#ifndef BASIS_H +#define BASIS_H #include "core/math/quat.h" @@ -341,4 +341,4 @@ real_t Basis::determinant() const { elements[1][0] * (elements[0][1] * elements[2][2] - elements[2][1] * elements[0][2]) + elements[2][0] * (elements[0][1] * elements[1][2] - elements[1][1] * elements[0][2]); } -#endif +#endif // BASIS_H diff --git a/core/math/quat.cpp b/core/math/quat.cpp index c1e45f36f0..6833d5de55 100644 --- a/core/math/quat.cpp +++ b/core/math/quat.cpp @@ -30,7 +30,7 @@ #include "quat.h" -#include "core/math/matrix3.h" +#include "core/math/basis.h" #include "core/print_string.h" // set_euler_xyz expects a vector containing the Euler angles in the format diff --git a/core/math/random_pcg.h b/core/math/random_pcg.h index d594d16b98..ef69bf7120 100644 --- a/core/math/random_pcg.h +++ b/core/math/random_pcg.h @@ -39,9 +39,9 @@ class RandomPCG { pcg32_random_t pcg; public: - static const uint64_t DEFAULT_SEED = 12047754176567800795ULL; + static const uint64_t DEFAULT_SEED = 12047754176567800795U; static const uint64_t DEFAULT_INC = PCG_DEFAULT_INC_64; - static const uint64_t RANDOM_MAX = 4294967295; + static const uint64_t RANDOM_MAX = 0xFFFFFFFF; RandomPCG(uint64_t seed = DEFAULT_SEED, uint64_t inc = PCG_DEFAULT_INC_64); diff --git a/core/math/transform.h b/core/math/transform.h index 9b323a6f0f..2f43f6b035 100644 --- a/core/math/transform.h +++ b/core/math/transform.h @@ -32,7 +32,7 @@ #define TRANSFORM_H #include "core/math/aabb.h" -#include "core/math/matrix3.h" +#include "core/math/basis.h" #include "core/math/plane.h" /** diff --git a/core/math/vector3.cpp b/core/math/vector3.cpp index b2e89ac7b8..1c28934422 100644 --- a/core/math/vector3.cpp +++ b/core/math/vector3.cpp @@ -30,7 +30,7 @@ #include "vector3.h" -#include "core/math/matrix3.h" +#include "core/math/basis.h" void Vector3::rotate(const Vector3 &p_axis, real_t p_phi) { diff --git a/core/math/vector3.h b/core/math/vector3.h index b0eef35635..8d6e093c4c 100644 --- a/core/math/vector3.h +++ b/core/math/vector3.h @@ -151,7 +151,7 @@ struct Vector3 { }; // Should be included after class definition, otherwise we get circular refs -#include "core/math/matrix3.h" +#include "core/math/basis.h" Vector3 Vector3::cross(const Vector3 &p_b) const { diff --git a/core/object.cpp b/core/object.cpp index 682586a7ab..05e661baab 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -1924,6 +1924,11 @@ void *Object::get_script_instance_binding(int p_script_language_index) { return _script_instance_bindings[p_script_language_index]; } +bool Object::has_script_instance_binding(int p_script_language_index) { + + return _script_instance_bindings[p_script_language_index] != NULL; +} + Object::Object() { _class_ptr = NULL; diff --git a/core/object.h b/core/object.h index a5bb6dea5d..5bfef8a439 100644 --- a/core/object.h +++ b/core/object.h @@ -729,6 +729,7 @@ public: //used by script languages to store binding data void *get_script_instance_binding(int p_script_language_index); + bool has_script_instance_binding(int p_script_language_index); void clear_internal_resource_paths(); diff --git a/core/os/dir_access.h b/core/os/dir_access.h index 16358fbc57..bde19bd5ae 100644 --- a/core/os/dir_access.h +++ b/core/os/dir_access.h @@ -98,6 +98,7 @@ public: virtual Error rename(String p_from, String p_to) = 0; virtual Error remove(String p_name) = 0; + virtual String get_filesystem_type() const = 0; static String get_full_path(const String &p_path, AccessType p_access); static DirAccess *create_for_path(const String &p_path); diff --git a/core/os/os.cpp b/core/os/os.cpp index 1f967030e7..d2d39d253a 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -393,16 +393,16 @@ Error OS::dialog_input_text(String p_title, String p_description, String p_parti return OK; }; -int OS::get_static_memory_usage() const { +uint64_t OS::get_static_memory_usage() const { return Memory::get_mem_usage(); } -int OS::get_dynamic_memory_usage() const { +uint64_t OS::get_dynamic_memory_usage() const { return MemoryPool::total_memory; } -int OS::get_static_memory_peak_usage() const { +uint64_t OS::get_static_memory_peak_usage() const { return Memory::get_mem_max_usage(); } @@ -418,7 +418,7 @@ bool OS::has_touchscreen_ui_hint() const { return Input::get_singleton() && Input::get_singleton()->is_emulating_touch_from_mouse(); } -int OS::get_free_static_memory() const { +uint64_t OS::get_free_static_memory() const { return Memory::get_mem_available(); } diff --git a/core/os/os.h b/core/os/os.h index 36d4e5a8c1..396555970a 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -45,12 +45,6 @@ @author Juan Linietsky <reduzio@gmail.com> */ -enum VideoDriver { - VIDEO_DRIVER_GLES3, - VIDEO_DRIVER_GLES2, - VIDEO_DRIVER_MAX, -}; - class OS { static OS *singleton; @@ -184,9 +178,16 @@ public: virtual VideoMode get_video_mode(int p_screen = 0) const = 0; virtual void get_fullscreen_mode_list(List<VideoMode> *p_list, int p_screen = 0) const = 0; + enum VideoDriver { + VIDEO_DRIVER_GLES3, + VIDEO_DRIVER_GLES2, + VIDEO_DRIVER_MAX, + }; + virtual int get_video_driver_count() const; virtual const char *get_video_driver_name(int p_driver) const; virtual int get_current_video_driver() const = 0; + virtual int get_audio_driver_count() const; virtual const char *get_audio_driver_name(int p_driver) const; @@ -266,6 +267,7 @@ public: virtual bool has_environment(const String &p_var) const = 0; virtual String get_environment(const String &p_var) const = 0; + virtual bool set_environment(const String &p_var, const String &p_value) const = 0; virtual String get_name() = 0; virtual List<String> get_cmdline_args() const { return _cmdline; } @@ -382,10 +384,10 @@ public: virtual void print_resources_in_use(bool p_short = false); virtual void print_all_resources(String p_to_file = ""); - virtual int get_static_memory_usage() const; - virtual int get_static_memory_peak_usage() const; - virtual int get_dynamic_memory_usage() const; - virtual int get_free_static_memory() const; + virtual uint64_t get_static_memory_usage() const; + virtual uint64_t get_static_memory_peak_usage() const; + virtual uint64_t get_dynamic_memory_usage() const; + virtual uint64_t get_free_static_memory() const; RenderThreadMode get_render_thread_mode() const { return _render_thread_mode; } diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp index 666384b093..60c2778603 100644 --- a/core/register_core_types.cpp +++ b/core/register_core_types.cpp @@ -99,6 +99,7 @@ void register_core_types() { _global_mutex = Mutex::create(); StringName::setup(); + ResourceLoader::initialize(); register_global_constants(); register_variant_methods(); @@ -142,6 +143,7 @@ void register_core_types() { ClassDB::register_virtual_class<InputEventGesture>(); ClassDB::register_class<InputEventMagnifyGesture>(); ClassDB::register_class<InputEventPanGesture>(); + ClassDB::register_class<InputEventMIDI>(); ClassDB::register_class<FuncRef>(); ClassDB::register_virtual_class<StreamPeer>(); @@ -268,6 +270,8 @@ void unregister_core_types() { if (ip) memdelete(ip); + ResourceLoader::finalize(); + ObjectDB::cleanup(); unregister_variant_methods(); diff --git a/core/variant.cpp b/core/variant.cpp index 8b2051add7..56b272cccf 100644 --- a/core/variant.cpp +++ b/core/variant.cpp @@ -1731,6 +1731,14 @@ Variant::operator RID() const { else if (type == OBJECT && !_get_obj().ref.is_null()) { return _get_obj().ref.get_rid(); } else if (type == OBJECT && _get_obj().obj) { +#ifdef DEBUG_ENABLED + if (ScriptDebugger::get_singleton()) { + if (!ObjectDB::instance_validate(_get_obj().obj)) { + ERR_EXPLAIN("Invalid pointer (object was deleted)"); + ERR_FAIL_V(RID()); + }; + }; +#endif Variant::CallError ce; Variant ret = _get_obj().obj->call(CoreStringNames::get_singleton()->get_rid, NULL, 0, ce); if (ce.error == Variant::CallError::CALL_OK && ret.get_type() == Variant::_RID) { diff --git a/core/variant.h b/core/variant.h index 0377c78ea8..6ddaf17406 100644 --- a/core/variant.h +++ b/core/variant.h @@ -41,8 +41,8 @@ #include "core/dvector.h" #include "core/io/ip_address.h" #include "core/math/aabb.h" +#include "core/math/basis.h" #include "core/math/face3.h" -#include "core/math/matrix3.h" #include "core/math/plane.h" #include "core/math/quat.h" #include "core/math/transform.h" diff --git a/doc/classes/AnimatedTexture.xml b/doc/classes/AnimatedTexture.xml index 9dc58ed195..08cd79e78f 100644 --- a/doc/classes/AnimatedTexture.xml +++ b/doc/classes/AnimatedTexture.xml @@ -1,8 +1,12 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="AnimatedTexture" inherits="Texture" category="Core" version="3.1"> <brief_description> + Proxy texture for simple frame-based animations. </brief_description> <description> + [code]AnimatedTexture[/code] is a resource format for simple frame-based animations, where multiple frames textures can be chained automatically with a predefined delay for each frame. It's not a [Node], contrarily to [AnimationPlayer] or [AnimatedSprite], but has the advantage of being usable at any place where a [Texture] resource can be used, e.g. in a [TileSet]. + The playback of the animation is controlled by the [member fps] property as well as each frame's optional delay (see [method set_frame_delay]). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame. + [code]AnimatedTexture[/code] currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one. </description> <tutorials> </tutorials> @@ -15,6 +19,7 @@ <argument index="0" name="frame" type="int"> </argument> <description> + Retrieves the delayed assigned to the given [code]frame[/code] ID. </description> </method> <method name="get_frame_texture" qualifiers="const"> @@ -23,6 +28,7 @@ <argument index="0" name="frame" type="int"> </argument> <description> + Retrieves the [Texture] assigned to the given [code]frame[/code] ID. </description> </method> <method name="set_frame_delay"> @@ -33,6 +39,14 @@ <argument index="1" name="delay" type="float"> </argument> <description> + Defines an additional delay (in seconds) between this frame and the next one, that will be added to the time interval defined by [member fps]. By default, frames have no delay defined. If a delay value is defined, the final time interval between this frame and the next will be [code]1.0 / fps + delay[/code]. + For example, for an animation with 3 frames, 2 FPS and a frame delay on the second frame of 1.2, the resulting playback will be: + [codeblock] + Frame 0: 0.5 s (1 / fps) + Frame 1: 1.7 s (1 / fps + 1.2) + Frame 2: 0.5 s (1 / fps) + Total duration: 2.7 s + [/codeblock] </description> </method> <method name="set_frame_texture"> @@ -43,15 +57,23 @@ <argument index="1" name="texture" type="Texture"> </argument> <description> + Assigns a [Texture] to the given [code]frame[/code] ID. IDs start at 0 (so the first frame has ID 0, and the last frame of the animation has ID [member frames] - 1). + You can define any frame texture up to [constant MAX_FRAMES], but keep in mind that only frames from 0 to [member frames] - 1 will be part of the animation. </description> </method> </methods> <members> <member name="fps" type="float" setter="set_fps" getter="get_fps"> + Number of frames per second. This value defines the default time interval between two frames of the animation, and thus the overall duration of the animation loop based on the [member frames] property. A value of 0 means no predefined number of frames per second, the animation will play according to each frame's frame delay (see [method set_frame_delay]). Default value: 4. + For example, an animation with 8 frames, no frame delay and a [code]fps[/code] value of 2 will run over 4 seconds, with one frame each 0.5 seconds. </member> <member name="frames" type="int" setter="set_frames" getter="get_frames"> + Number of frames to use in the animation. While you can create the frames independently with [method set_frame_texture], you need to set this value for the animation to take new frames into account. The maximum number of frames is [constant MAX_FRAMES]. Default value: 1. </member> </members> <constants> + <constant name="MAX_FRAMES" value="256"> + The maximum number of frames supported by [code]AnimatedTexture[/code]. If you need more frames in your animation, use [AnimationPlayer] or [AnimatedSprite]. + </constant> </constants> </class> diff --git a/doc/classes/AudioEffectLimiter.xml b/doc/classes/AudioEffectLimiter.xml index 9e791f02d7..5c5c55d17b 100644 --- a/doc/classes/AudioEffectLimiter.xml +++ b/doc/classes/AudioEffectLimiter.xml @@ -4,7 +4,7 @@ Adds a soft clip Limiter audio effect to an Audio bus. </brief_description> <description> - A limiter is similar to a compressor, but it’s less flexible and designed to disallow sound going over a given dB threshold. Adding one in the Master Bus is always recommended to reduce the effects of clipping. + A limiter is similar to a compressor, but it's less flexible and designed to disallow sound going over a given dB threshold. Adding one in the Master Bus is always recommended to reduce the effects of clipping. Soft clipping starts to reduce the peaks a little below the threshold level and progressively increases its effect as the input level increases such that the threshold is never exceeded. </description> <tutorials> diff --git a/doc/classes/Camera.xml b/doc/classes/Camera.xml index f4b1bc1519..e56fb63dc5 100644 --- a/doc/classes/Camera.xml +++ b/doc/classes/Camera.xml @@ -35,6 +35,12 @@ <description> </description> </method> + <method name="get_frustum" qualifiers="const"> + <return type="Array"> + </return> + <description> + </description> + </method> <method name="is_position_behind" qualifiers="const"> <return type="bool"> </return> diff --git a/doc/classes/CollisionObject2D.xml b/doc/classes/CollisionObject2D.xml index 48a198b248..91f283a2b7 100644 --- a/doc/classes/CollisionObject2D.xml +++ b/doc/classes/CollisionObject2D.xml @@ -40,6 +40,14 @@ Returns the object's [RID]. </description> </method> + <method name="get_shape_owner_one_way_collision_margin" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="owner_id" type="int"> + </argument> + <description> + </description> + </method> <method name="get_shape_owners"> <return type="Array"> </return> @@ -185,6 +193,16 @@ If [code]enable[/code] is [code]true[/code], collisions for the shape owner originating from this [code]CollisionObject2D[/code] will not be reported to collided with [code]CollisionObject2D[/code]s. </description> </method> + <method name="shape_owner_set_one_way_collision_margin"> + <return type="void"> + </return> + <argument index="0" name="owner_id" type="int"> + </argument> + <argument index="1" name="margin" type="float"> + </argument> + <description> + </description> + </method> <method name="shape_owner_set_transform"> <return type="void"> </return> diff --git a/doc/classes/CollisionPolygon2D.xml b/doc/classes/CollisionPolygon2D.xml index f63adbf71a..3dd87a4120 100644 --- a/doc/classes/CollisionPolygon2D.xml +++ b/doc/classes/CollisionPolygon2D.xml @@ -22,6 +22,8 @@ <member name="one_way_collision" type="bool" setter="set_one_way_collision" getter="is_one_way_collision_enabled"> If [code]true[/code], only edges that face up, relative to CollisionPolygon2D's rotation, will collide with other objects. </member> + <member name="one_way_collision_margin" type="float" setter="set_one_way_collision_margin" getter="get_one_way_collision_margin"> + </member> <member name="polygon" type="PoolVector2Array" setter="set_polygon" getter="get_polygon"> The polygon's list of vertices. The final point will be connected to the first. </member> diff --git a/doc/classes/CollisionShape2D.xml b/doc/classes/CollisionShape2D.xml index d3c616ee3d..07dbde1c21 100644 --- a/doc/classes/CollisionShape2D.xml +++ b/doc/classes/CollisionShape2D.xml @@ -20,6 +20,8 @@ <member name="one_way_collision" type="bool" setter="set_one_way_collision" getter="is_one_way_collision_enabled"> Sets whether this collision shape should only detect collision on one side (top or bottom). </member> + <member name="one_way_collision_margin" type="float" setter="set_one_way_collision_margin" getter="get_one_way_collision_margin"> + </member> <member name="shape" type="Shape2D" setter="set_shape" getter="get_shape"> The actual shape owned by this collision shape. </member> diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml index f067b50c72..d27839e0a6 100644 --- a/doc/classes/Control.xml +++ b/doc/classes/Control.xml @@ -681,7 +681,7 @@ [b]Note:[/b] On Linux, shapes may vary depending on the cursor theme of the system. </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. See the constants to learn what each does. + Controls whether the control will be able to receive mouse button input events through [method _gui_input] and how these events should be handled. Also controls whether the control can receive the [signal mouse_entered], and [signal mouse_exited] signals. See the constants to learn what each does. </member> <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents"> Enables whether rendering of children should be clipped to this control's rectangle. If true, parts of a child which would be visibly outside of this control's rectangle will not be rendered. @@ -929,13 +929,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. + The control will receive mouse button input events through [method _gui_input] if clicked on. And the control will receive the [signal mouse_entered] and [signal mouse_exited] signals. These events are automatically marked as handled and they will not propagate further to other controls. This also results in blocking signals in 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, so unhandled input will not be fired. + The control will receive mouse button input events through [method _gui_input] if clicked on. And the control will receive the [signal mouse_entered] and [signal mouse_exited] signals. If this control does not handle the event, the parent control (if any) will be considered, and so on until there is no more parent control to potentially handle it. This also allows signals to fire in other controls. Even if no control handled it at all, the event will still be handled automatically, so unhandled input will not be fired. </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. + The control will not receive mouse button input events through [method _gui_input]. Also the control will not receive the [signal mouse_entered] nor [signal mouse_exited] signals. This will not block other controls from receiving these events or firing the signals. Ignored events will not be handled automatically. </constant> <constant name="GROW_DIRECTION_BEGIN" value="0" enum="GrowDirection"> The control will grow to the left or top to make up if its minimum size is changed to be greater than its current size on the respective axis. diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml index a9e2a38dcf..9c78853cfe 100644 --- a/doc/classes/Dictionary.xml +++ b/doc/classes/Dictionary.xml @@ -5,6 +5,7 @@ </brief_description> <description> Dictionary type. Associative container which contains values referenced by unique keys. Dictionaries are always passed by reference. + Erasing elements while iterating over them [b]is not supported[/b]. </description> <tutorials> </tutorials> @@ -38,7 +39,7 @@ <argument index="0" name="key" type="Variant"> </argument> <description> - Erase a dictionary key/value pair by key. + Erase a dictionary key/value pair by key. Do not erase elements while iterating over the dictionary. </description> </method> <method name="get"> diff --git a/doc/classes/EditorProperty.xml b/doc/classes/EditorProperty.xml index 7d09554330..b3fc036edb 100644 --- a/doc/classes/EditorProperty.xml +++ b/doc/classes/EditorProperty.xml @@ -9,6 +9,20 @@ <demos> </demos> <methods> + <method name="emit_changed"> + <return type="void"> + </return> + <argument index="0" name="property" type="String"> + </argument> + <argument index="1" name="value" type="Variant"> + </argument> + <argument index="2" name="field" type="String" default=""""> + </argument> + <argument index="3" name="changing" type="bool" default="false"> + </argument> + <description> + </description> + </method> <method name="get_edited_object"> <return type="Object"> </return> diff --git a/doc/classes/EditorSpatialGizmo.xml b/doc/classes/EditorSpatialGizmo.xml index c3ecd3c3b7..45b92276f1 100644 --- a/doc/classes/EditorSpatialGizmo.xml +++ b/doc/classes/EditorSpatialGizmo.xml @@ -4,7 +4,7 @@ Custom gizmo for editing Spatial objects. </brief_description> <description> - Custom gizmo that is used for providing custom visualization and editing (handles) for 3D Spatial objects. These are created by [method EditorSpatialGizmoPlugin.create_gizmo]. + Custom gizmo that is used for providing custom visualization and editing (handles) for 3D Spatial objects. See [EditorSpatialGizmoPlugin] for more information. </description> <tutorials> </tutorials> @@ -116,7 +116,30 @@ <argument index="0" name="index" type="int"> </argument> <description> - Get actual value of a handle. This value can be anything and used for eventually undoing the motion when calling [method commit_handle] + Get actual value of a handle. This value can be anything and used for eventually undoing the motion when calling [method commit_handle]. + </description> + </method> + <method name="get_plugin" qualifiers="const"> + <return type="EditorSpatialGizmoPlugin"> + </return> + <description> + Return the [EditorSpatialGizmoPlugin] that owns this gizmo. It's useful to retrieve materials using [method EditorSpatialGizmoPlugin.get_material]. + </description> + </method> + <method name="get_spatial_node" qualifiers="const"> + <return type="Spatial"> + </return> + <description> + Returns the Spatial node associated with this gizmo. + </description> + </method> + <method name="is_handle_highlighted" qualifiers="virtual"> + <return type="bool"> + </return> + <argument index="0" name="index" type="int"> + </argument> + <description> + Get whether a handle is highlighted or not. </description> </method> <method name="redraw" qualifiers="virtual"> diff --git a/doc/classes/EditorSpatialGizmoPlugin.xml b/doc/classes/EditorSpatialGizmoPlugin.xml index 521ec748b3..a62b23ead8 100644 --- a/doc/classes/EditorSpatialGizmoPlugin.xml +++ b/doc/classes/EditorSpatialGizmoPlugin.xml @@ -1,10 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="EditorSpatialGizmoPlugin" inherits="Resource" category="Core" version="3.1"> <brief_description> + Used by the editor to define Spatial gizmo types. </brief_description> <description> + EditorSpatialGizmoPlugin allows you to define a new type of Gizmo. There are two main ways to do so: extending [EditorSpatialGizmoPlugin] for the simpler gizmos, or creating a new [EditorSpatialGizmo] type. See the tutorial in the documentation for more info. </description> <tutorials> + <link>https://docs.godotengine.org/en/latest/tutorials/plugins/editor/spatial_gizmos.html</link> </tutorials> <demos> </demos> @@ -17,12 +20,14 @@ <argument index="1" name="material" type="SpatialMaterial"> </argument> <description> + Adds a new material to the internal material list for the plugin. It can then be accessed with [method get_material]. Should not be overridden. </description> </method> <method name="can_be_hidden" qualifiers="virtual"> <return type="bool"> </return> <description> + Override this method to define whether the gizmo can be hidden or not. Defaults to true. </description> </method> <method name="commit_handle" qualifiers="virtual"> @@ -37,6 +42,7 @@ <argument index="3" name="cancel" type="bool" default="false"> </argument> <description> + Override this method to commit gizmo handles. Called for this plugin's active gizmos. </description> </method> <method name="create_gizmo" qualifiers="virtual"> @@ -45,6 +51,7 @@ <argument index="0" name="spatial" type="Spatial"> </argument> <description> + Override this method to return a custom [EditorSpatialGizmo] for the spatial nodes of your choice, return [code]null[/code] for the rest of nodes. (See also [method has_gizmo]) </description> </method> <method name="create_handle_material"> @@ -55,6 +62,7 @@ <argument index="1" name="billboard" type="bool" default="false"> </argument> <description> + Creates a handle material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorSpatialGizmo.add_handles]. Should not be overridden. </description> </method> <method name="create_icon_material"> @@ -69,6 +77,7 @@ <argument index="3" name="color" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> <description> + Creates an icon material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorSpatialGizmo.add_unscaled_billboard]. Should not be overridden. </description> </method> <method name="create_material"> @@ -85,6 +94,7 @@ <argument index="4" name="use_vertex_color" type="bool" default="false"> </argument> <description> + Creates an unshaded material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorSpatialGizmo.add_mesh] and [method EditorSpatialGizmo.add_lines]. Should not be overridden. </description> </method> <method name="get_handle_name" qualifiers="virtual"> @@ -95,6 +105,7 @@ <argument index="1" name="index" type="int"> </argument> <description> + Override this method to provide gizmo's handle names. Called for this plugin's active gizmos. </description> </method> <method name="get_handle_value" qualifiers="virtual"> @@ -105,6 +116,7 @@ <argument index="1" name="index" type="int"> </argument> <description> + Get actual value of a handle from gizmo. Called for this plugin's active gizmos. </description> </method> <method name="get_material"> @@ -115,12 +127,14 @@ <argument index="1" name="gizmo" type="EditorSpatialGizmo"> </argument> <description> + Get material from the internal list of materials. If an [EditorSpatialGizmo] is provided it will try to get the corresponding variant (selected and/or editable). </description> </method> <method name="get_name" qualifiers="virtual"> <return type="String"> </return> <description> + Override this method to provide the name that will appear in teh gizmo visibility menu. </description> </method> <method name="has_gizmo" qualifiers="virtual"> @@ -129,9 +143,10 @@ <argument index="0" name="spatial" type="Spatial"> </argument> <description> + Override this method to define which Spatial nodes have a gizmo from this plugin. Whenever a [Spatial] node is added to a scene this method is called, if it returns [code]true[/code] the node gets a generic [EditorSpatialGizmo] assigned and is added to this plugin's list of active gizmos. </description> </method> - <method name="is_gizmo_handle_highlighted" qualifiers="virtual"> + <method name="is_handle_highlighted" qualifiers="virtual"> <return type="bool"> </return> <argument index="0" name="gizmo" type="EditorSpatialGizmo"> @@ -139,12 +154,14 @@ <argument index="1" name="index" type="int"> </argument> <description> + Get whether a handle is highlighted or not. Called for this plugin's active gizmos. </description> </method> <method name="is_selectable_when_hidden" qualifiers="virtual"> <return type="bool"> </return> <description> + Override this method to define whether Spatial with this gizmo should be selecteble even when the gizmo is hidden. </description> </method> <method name="redraw" qualifiers="virtual"> @@ -153,6 +170,7 @@ <argument index="0" name="gizmo" type="EditorSpatialGizmo"> </argument> <description> + Callback to redraw the provided gizmo. Called for this plugin's active gizmos. </description> </method> <method name="set_handle" qualifiers="virtual"> @@ -167,6 +185,7 @@ <argument index="3" name="point" type="Vector2"> </argument> <description> + Update the value of a handle after it has been updated. Called for this plugin's active gizmos. </description> </method> </methods> diff --git a/doc/classes/Expression.xml b/doc/classes/Expression.xml index c5f71fe55e..78623b359e 100644 --- a/doc/classes/Expression.xml +++ b/doc/classes/Expression.xml @@ -16,7 +16,7 @@ func _on_text_entered(command): var error = expression.parse(command, []) if error != OK: - print(get_error_text()) + print(expression.get_error_text()) return var result = expression.execute([], null, true) if not expression.has_execute_failed(): @@ -39,6 +39,7 @@ </argument> <description> Executes the expression that was previously parsed by [method parse] and returns the result. Before you use the returned object, you should check if the method failed by calling [method has_execute_failed]. + If you defined input variables in [method parse], you can specify their values in the inputs array, in the same order. </description> </method> <method name="get_error_text" qualifiers="const"> @@ -64,6 +65,7 @@ </argument> <description> Parses the expression and returns a [enum @GlobalScope.Error]. + You can optionally specify names of variables that may appear in the expression with [code]input_names[/code], so that you can bind them when it gets executed. </description> </method> </methods> diff --git a/doc/classes/File.xml b/doc/classes/File.xml index 1967349546..6462176c73 100644 --- a/doc/classes/File.xml +++ b/doc/classes/File.xml @@ -48,6 +48,7 @@ </argument> <description> Returns [code]true[/code] if the file exists in the given path. + Note that many resources types are imported (e.g. textures or sound files), and that their source asset will not be included in the exported game, as only the imported version is used (in the [code]res://.import[/code] folder). To check for the existence of such resources while taking into account the remapping to their imported location, use [method ResourceLoader.exists]. Typically, using [code]File.file_exists[/code] on an imported resource would work while you are developing in the editor (the source asset is present in [code]res://[/code], but fail when exported). </description> </method> <method name="get_16" qualifiers="const"> diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml index 56accdcd9e..f165027d44 100644 --- a/doc/classes/Image.xml +++ b/doc/classes/Image.xml @@ -4,7 +4,7 @@ Image datatype. </brief_description> <description> - Native image datatype. Contains image data, which can be converted to a [Texture], and several functions to interact with it. The maximum width and height for an [code]Image[/code] is 16384 pixels. + Native image datatype. Contains image data, which can be converted to a [Texture], and several functions to interact with it. The maximum width and height for an [code]Image[/code] are [constant MAX_WIDTH] and [constant MAX_HEIGHT]. </description> <tutorials> </tutorials> @@ -227,7 +227,7 @@ <return type="int" enum="Image.Format"> </return> <description> - Returns the image’s format. See [code]FORMAT_*[/code] constants. + Returns the image's format. See [code]FORMAT_*[/code] constants. </description> </method> <method name="get_height" qualifiers="const"> @@ -476,6 +476,12 @@ </member> </members> <constants> + <constant name="MAX_WIDTH" value="16384"> + The maximal width allowed for [code]Image[/code] resources. + </constant> + <constant name="MAX_HEIGHT" value="16384"> + The maximal height allowed for [code]Image[/code] resources. + </constant> <constant name="FORMAT_L8" value="0" enum="Format"> </constant> <constant name="FORMAT_LA8" value="1" enum="Format"> diff --git a/doc/classes/InputEventMIDI.xml b/doc/classes/InputEventMIDI.xml new file mode 100644 index 0000000000..2cdd70e42c --- /dev/null +++ b/doc/classes/InputEventMIDI.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="InputEventMIDI" inherits="InputEvent" category="Core" version="3.1"> + <brief_description> + </brief_description> + <description> + </description> + <tutorials> + </tutorials> + <demos> + </demos> + <methods> + </methods> + <members> + <member name="channel" type="int" setter="set_channel" getter="get_channel"> + </member> + <member name="controller_number" type="int" setter="set_controller_number" getter="get_controller_number"> + </member> + <member name="controller_value" type="int" setter="set_controller_value" getter="get_controller_value"> + </member> + <member name="instrument" type="int" setter="set_instrument" getter="get_instrument"> + </member> + <member name="message" type="int" setter="set_message" getter="get_message"> + </member> + <member name="pitch" type="int" setter="set_pitch" getter="get_pitch"> + </member> + <member name="pressure" type="int" setter="set_pressure" getter="get_pressure"> + </member> + <member name="velocity" type="int" setter="set_velocity" getter="get_velocity"> + </member> + </members> + <constants> + </constants> +</class> diff --git a/doc/classes/MultiMesh.xml b/doc/classes/MultiMesh.xml index 1908fdd684..7986461840 100644 --- a/doc/classes/MultiMesh.xml +++ b/doc/classes/MultiMesh.xml @@ -4,8 +4,8 @@ Provides high performance mesh instancing. </brief_description> <description> - MultiMesh provides low level mesh instancing. If the amount of [Mesh] instances needed goes from hundreds to thousands (and most need to be visible at close proximity) creating such a large amount of [MeshInstance] nodes may affect performance by using too much CPU or video memory. - For this case a MultiMesh becomes very useful, as it can draw thousands of instances with little API overhead. + MultiMesh provides low level mesh instancing. Drawing thousands of [MeshInstance] nodes can be slow because each object is submitted to the GPU to be drawn individually. + MultiMesh is much faster because it can draw thousands of instances with a single draw call, resulting in less API overhead. As a drawback, if the instances are too far away of each other, performance may be reduced as every single instance will always rendered (they are spatially indexed as one, for the whole object). Since instances may have any behavior, the AABB used for visibility must be provided by the user. </description> @@ -36,6 +36,7 @@ <argument index="0" name="instance" type="int"> </argument> <description> + Return the custom data that has been set for a specific instance. </description> </method> <method name="get_instance_transform" qualifiers="const"> @@ -66,6 +67,7 @@ <argument index="1" name="custom_data" type="Color"> </argument> <description> + Set custom data for a specific instance. Although [Color] is used, it is just a container for 4 numbers. </description> </method> <method name="set_instance_transform"> @@ -82,32 +84,45 @@ </methods> <members> <member name="color_format" type="int" setter="set_color_format" getter="get_color_format" enum="MultiMesh.ColorFormat"> + Format of colors in color array that gets passed to shader. </member> <member name="custom_data_format" type="int" setter="set_custom_data_format" getter="get_custom_data_format" enum="MultiMesh.CustomDataFormat"> + Format of custom data in custom data array that gets passed to shader. </member> <member name="instance_count" type="int" setter="set_instance_count" getter="get_instance_count"> + Number of instances that will get drawn. </member> <member name="mesh" type="Mesh" setter="set_mesh" getter="get_mesh"> + Mesh to be drawn. </member> <member name="transform_format" type="int" setter="set_transform_format" getter="get_transform_format" enum="MultiMesh.TransformFormat"> + Format of transform used to transform mesh, either 2D or 3D. </member> </members> <constants> <constant name="TRANSFORM_2D" value="0" enum="TransformFormat"> + Use this when using 2D transforms. </constant> <constant name="TRANSFORM_3D" value="1" enum="TransformFormat"> + Use this when using 3D transforms. </constant> <constant name="COLOR_NONE" value="0" enum="ColorFormat"> + Use when you are not using per-instance [Color]s. </constant> <constant name="COLOR_8BIT" value="1" enum="ColorFormat"> + Compress [Color] data into 8 bits when passing to shader. This uses less memory and can be faster, but the [Color] loses precision. </constant> <constant name="COLOR_FLOAT" value="2" enum="ColorFormat"> + The [Color] passed into [method set_instance_color] will use 4 floats. Use this for highest precision [Color]. </constant> <constant name="CUSTOM_DATA_NONE" value="0" enum="CustomDataFormat"> + Use when you are not using per-instance custom data. </constant> <constant name="CUSTOM_DATA_8BIT" value="1" enum="CustomDataFormat"> + Compress custom_data into 8 bits when passing to shader. This uses less memory and can be faster, but loses precision. </constant> <constant name="CUSTOM_DATA_FLOAT" value="2" enum="CustomDataFormat"> + The [Color] passed into [method set_instance_custom_data] will use 4 floats. Use this for highest precision. </constant> </constants> </class> diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index 02a8ee8e75..e872fee1cc 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -269,6 +269,15 @@ <description> </description> </method> + <method name="get_node_or_null" qualifiers="const"> + <return type="Node"> + </return> + <argument index="0" name="path" type="NodePath"> + </argument> + <description> + Similar to [method get_node], but does not raise an error when [code]path[/code] does not point to a valid [code]Node[/code]. + </description> + </method> <method name="get_parent" qualifiers="const"> <return type="Node"> </return> diff --git a/doc/classes/Physics2DServer.xml b/doc/classes/Physics2DServer.xml index cd887ff950..fe1465260f 100644 --- a/doc/classes/Physics2DServer.xml +++ b/doc/classes/Physics2DServer.xml @@ -735,6 +735,8 @@ </argument> <argument index="2" name="enable" type="bool"> </argument> + <argument index="3" name="margin" type="float"> + </argument> <description> Enables one way collision on body if [code]enable[/code] is [code]true[/code]. </description> diff --git a/doc/classes/PhysicsDirectBodyState.xml b/doc/classes/PhysicsDirectBodyState.xml index 2b4125aef4..cf718f06b2 100644 --- a/doc/classes/PhysicsDirectBodyState.xml +++ b/doc/classes/PhysicsDirectBodyState.xml @@ -57,7 +57,7 @@ <argument index="1" name="j" 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 position are in global coordinates, and the position is relative to the object's origin. + Applies a positioned impulse to the body. An impulse is time independent! Applying an impulse every frame would result in a framerate dependent force. For this reason it should only be used when simulating one-time impacts. The position uses the rotation of the global coordinate system, but is centered at the object's origin. </description> </method> <method name="apply_torque_impulse"> diff --git a/doc/classes/PhysicsDirectSpaceState.xml b/doc/classes/PhysicsDirectSpaceState.xml index c4dc103b72..118010b3cf 100644 --- a/doc/classes/PhysicsDirectSpaceState.xml +++ b/doc/classes/PhysicsDirectSpaceState.xml @@ -21,7 +21,7 @@ </argument> <description> Checks whether the shape can travel to a point. The method will return an array with two floats between 0 and 1, both representing a fraction of [code]motion[/code]. The first is how far the shape can move without triggering a collision, and the second is the point at which a collision will occur. If no collision is detected, the returned array will be [code][1, 1][/code]. - If the shape can not move, the returned array will be [code][0, 0][/code]. + If the shape can not move, the returned array will be [code][0, 0][/code] under Bullet, and empty under GodotPhysics. </description> </method> <method name="collide_shape"> diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml index fe7dbe52b0..ea696e624a 100644 --- a/doc/classes/PopupMenu.xml +++ b/doc/classes/PopupMenu.xml @@ -378,7 +378,7 @@ <argument index="1" name="enable" type="bool"> </argument> <description> - Mark the item at index "idx" as a separator, 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 line. </description> </method> <method name="set_item_checked"> diff --git a/doc/classes/ResourcePreloader.xml b/doc/classes/ResourcePreloader.xml index 002bcd891a..18d6e04d8e 100644 --- a/doc/classes/ResourcePreloader.xml +++ b/doc/classes/ResourcePreloader.xml @@ -4,7 +4,7 @@ Resource Preloader Node. </brief_description> <description> - Resource Preloader Node. This node is used to preload sub-resources inside a scene, so when the scene is loaded all the resources are ready to use and be retrieved from here. + This node is used to preload sub-resources inside a scene, so when the scene is loaded, all the resources are ready to use and can be retrieved from the preloader. </description> <tutorials> </tutorials> @@ -19,6 +19,7 @@ <argument index="1" name="resource" type="Resource"> </argument> <description> + Adds a resource to the preloader with the given [code]name[/code]. If a resource with the given [code]name[/code] already exists, the new resource will be renamed to "[code]name[/code] N" where N is an incrementing number starting from 2. </description> </method> <method name="get_resource" qualifiers="const"> @@ -27,14 +28,14 @@ <argument index="0" name="name" type="String"> </argument> <description> - Return the resource given a text-id. + Returns the resource associated to [code]name[/code]. </description> </method> <method name="get_resource_list" qualifiers="const"> <return type="PoolStringArray"> </return> <description> - Return the list of resources inside the preloader. + Returns the list of resources inside the preloader. </description> </method> <method name="has_resource" qualifiers="const"> @@ -43,7 +44,7 @@ <argument index="0" name="name" type="String"> </argument> <description> - Return true if the preloader has a given resource. + Returns true if the preloader contains a resource associated to [code]name[/code]. </description> </method> <method name="remove_resource"> @@ -52,7 +53,7 @@ <argument index="0" name="name" type="String"> </argument> <description> - Remove a resource from the preloader by text id. + Removes the resource associated to [code]name[/code] from the preloader. </description> </method> <method name="rename_resource"> @@ -63,7 +64,7 @@ <argument index="1" name="newname" type="String"> </argument> <description> - Rename a resource inside the preloader, from a text-id to a new text-id. + Renames a resource inside the preloader from [code]name[/code] to [code]newname[/code]. </description> </method> </methods> diff --git a/doc/classes/RigidBody.xml b/doc/classes/RigidBody.xml index 3f28156915..3c253c3bea 100644 --- a/doc/classes/RigidBody.xml +++ b/doc/classes/RigidBody.xml @@ -72,7 +72,7 @@ <argument index="1" name="impulse" type="Vector3"> </argument> <description> - Applies 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. + Applies a positioned impulse to the body. An impulse is time independent! Applying an impulse every frame would result in a framerate dependent force. For this reason it should only be used when simulating one-time impacts. The position uses the rotation of the global coordinate system, but is centered at the object's origin. </description> </method> <method name="apply_torque_impulse"> diff --git a/doc/classes/RigidBody2D.xml b/doc/classes/RigidBody2D.xml index 68e78ba5d4..9b74dbedb4 100644 --- a/doc/classes/RigidBody2D.xml +++ b/doc/classes/RigidBody2D.xml @@ -69,7 +69,7 @@ <argument index="1" name="impulse" type="Vector2"> </argument> <description> - 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. + Applies a positioned impulse to the body. An impulse is time independent! Applying an impulse every frame would result in a framerate dependent force. For this reason it should only be used when simulating one-time impacts (use the "_force" functions otherwise). The position uses the rotation of the global coordinate system, but is centered at the object's origin. </description> </method> <method name="apply_torque_impulse"> diff --git a/doc/classes/StyleBox.xml b/doc/classes/StyleBox.xml index dee3e6db49..be21abe275 100644 --- a/doc/classes/StyleBox.xml +++ b/doc/classes/StyleBox.xml @@ -27,6 +27,12 @@ <description> </description> </method> + <method name="get_current_item_drawn" qualifiers="const"> + <return type="CanvasItem"> + </return> + <description> + </description> + </method> <method name="get_margin" qualifiers="const"> <return type="float"> </return> diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml index 2e5d5d81c9..fd158587e5 100644 --- a/doc/classes/SurfaceTool.xml +++ b/doc/classes/SurfaceTool.xml @@ -75,14 +75,6 @@ Specify a Tangent for the next Vertex to use. </description> </method> - <method name="add_to_format"> - <return type="void"> - </return> - <argument index="0" name="flags" type="int"> - </argument> - <description> - </description> - </method> <method name="add_triangle_fan"> <return type="void"> </return> diff --git a/doc/classes/Theme.xml b/doc/classes/Theme.xml index 8c6acd2c51..bffd8ea6d9 100644 --- a/doc/classes/Theme.xml +++ b/doc/classes/Theme.xml @@ -80,6 +80,14 @@ Sets theme values to a copy of the default theme values. </description> </method> + <method name="copy_theme"> + <return type="void"> + </return> + <argument index="0" name="other" type="Theme"> + </argument> + <description> + </description> + </method> <method name="get_color" qualifiers="const"> <return type="Color"> </return> diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml index fb5a733ccd..4849d768f5 100644 --- a/doc/classes/TileMap.xml +++ b/doc/classes/TileMap.xml @@ -244,7 +244,7 @@ <argument index="0" name="world_position" type="Vector2"> </argument> <description> - Returns the tilemap (grid-based) coordinatescorresponding to the given global position. + Returns the tilemap (grid-based) coordinates corresponding to the given local position. </description> </method> </methods> diff --git a/doc/classes/TileSet.xml b/doc/classes/TileSet.xml index 9e31f7e1b1..4abe94f119 100644 --- a/doc/classes/TileSet.xml +++ b/doc/classes/TileSet.xml @@ -439,6 +439,16 @@ Returns the one-way collision value of a tile's shape. </description> </method> + <method name="tile_get_shape_one_way_margin" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="shape_id" type="int"> + </argument> + <description> + </description> + </method> <method name="tile_get_shape_transform" qualifiers="const"> <return type="Transform2D"> </return> @@ -633,6 +643,18 @@ Enables one-way collision on a tile's shape. </description> </method> + <method name="tile_set_shape_one_way_margin"> + <return type="void"> + </return> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="shape_id" type="int"> + </argument> + <argument index="2" name="one_way" type="float"> + </argument> + <description> + </description> + </method> <method name="tile_set_shape_transform"> <return type="void"> </return> diff --git a/drivers/dummy/rasterizer_dummy.h b/drivers/dummy/rasterizer_dummy.h index ddc0dd5fa9..214da82819 100644 --- a/drivers/dummy/rasterizer_dummy.h +++ b/drivers/dummy/rasterizer_dummy.h @@ -241,6 +241,7 @@ public: void textures_keep_original(bool p_enable) {} void texture_set_proxy(RID p_proxy, RID p_base) {} + virtual Size2 texture_size_with_proxy(RID p_texture) const { return Size2(); } void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable) {} /* SKY API */ diff --git a/drivers/gles2/rasterizer_canvas_gles2.cpp b/drivers/gles2/rasterizer_canvas_gles2.cpp index 047eaaf0ac..64e4dbdab4 100644 --- a/drivers/gles2/rasterizer_canvas_gles2.cpp +++ b/drivers/gles2/rasterizer_canvas_gles2.cpp @@ -112,9 +112,11 @@ void RasterizerCanvasGLES2::_set_uniforms() { void RasterizerCanvasGLES2::canvas_begin() { state.canvas_shader.bind(); + bool transparent = false; if (storage->frame.current_rt) { glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->fbo); glColorMask(1, 1, 1, 1); + transparent = storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]; } if (storage->frame.clear_request) { @@ -122,11 +124,13 @@ void RasterizerCanvasGLES2::canvas_begin() { glClearColor(storage->frame.clear_request_color.r, storage->frame.clear_request_color.g, storage->frame.clear_request_color.b, - storage->frame.clear_request_color.a); + transparent ? storage->frame.clear_request_color.a : 1.0); glClear(GL_COLOR_BUFFER_BIT); storage->frame.clear_request = false; } + glColorMask(1, 1, 1, transparent ? 1 : 0); + /* if (storage->frame.current_rt) { glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->fbo); @@ -182,6 +186,7 @@ void RasterizerCanvasGLES2::canvas_end() { state.using_texture_rect = false; state.using_skeleton = false; state.using_ninepatch = false; + glColorMask(1, 1, 1, 1); } RasterizerStorageGLES2::Texture *RasterizerCanvasGLES2::_bind_canvas_texture(const RID &p_texture, const RID &p_normal_map) { @@ -1162,7 +1167,65 @@ void RasterizerCanvasGLES2::_canvas_item_render_commands(Item *p_item, Item *cur void RasterizerCanvasGLES2::_copy_texscreen(const Rect2 &p_rect) { - // This isn't really working yet, so disabling for now. + if (storage->frame.current_rt->copy_screen_effect.color == 0) { + ERR_EXPLAIN("Can't use screen texture copying in a render target configured without copy buffers"); + ERR_FAIL(); + } + + glDisable(GL_BLEND); + + state.canvas_texscreen_used = true; + + Vector2 wh(storage->frame.current_rt->width, storage->frame.current_rt->height); + + Color copy_section(p_rect.position.x / wh.x, p_rect.position.y / wh.y, p_rect.size.x / wh.x, p_rect.size.y / wh.y); + + if (p_rect != Rect2()) { + storage->shaders.copy.set_conditional(CopyShaderGLES2::USE_COPY_SECTION, true); + } + + glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->copy_screen_effect.fbo); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->color); + + glClearColor(1, 0, 1, 1); + glClear(GL_COLOR_BUFFER_BIT); + + storage->shaders.copy.bind(); + storage->shaders.copy.set_uniform(CopyShaderGLES2::COPY_SECTION, copy_section); + + const Vector2 vertpos[4] = { + Vector2(-1, -1), + Vector2(-1, 1), + Vector2(1, 1), + Vector2(1, -1), + }; + + const Vector2 uvpos[4] = { + Vector2(0, 0), + Vector2(0, 1), + Vector2(1, 1), + Vector2(1, 0) + }; + + const int indexpos[6] = { + 0, 1, 2, + 2, 3, 0 + }; + + _draw_polygon(indexpos, 6, 4, vertpos, uvpos, NULL, false); + + storage->shaders.copy.set_conditional(CopyShaderGLES2::USE_COPY_SECTION, false); + + glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->fbo); //back to front + + // back to canvas, force rebind + state.using_texture_rect = false; + state.canvas_shader.bind(); + _bind_canvas_texture(state.current_tex, state.current_normal); + _set_uniforms(); + + glEnable(GL_BLEND); } void RasterizerCanvasGLES2::canvas_render_items(Item *p_item_list, int p_z, const Color &p_modulate, Light *p_light, const Transform2D &p_base_transform) { @@ -1178,6 +1241,7 @@ void RasterizerCanvasGLES2::canvas_render_items(Item *p_item_list, int p_z, cons state.current_tex = RID(); state.current_tex_ptr = NULL; state.current_normal = RID(); + state.canvas_texscreen_used = false; glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, storage->resources.white_tex); @@ -1265,7 +1329,18 @@ void RasterizerCanvasGLES2::canvas_render_items(Item *p_item_list, int p_z, cons if (shader_ptr) { if (shader_ptr->canvas_item.uses_screen_texture) { - _copy_texscreen(Rect2()); + if (!state.canvas_texscreen_used) { + //copy if not copied before + _copy_texscreen(Rect2()); + + // blend mode will have been enabled so make sure we disable it again later on + //last_blend_mode = last_blend_mode != RasterizerStorageGLES2::Shader::CanvasItem::BLEND_MODE_DISABLED ? last_blend_mode : -1; + } + + if (storage->frame.current_rt->copy_screen_effect.color) { + glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 4); + glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->copy_screen_effect.color); + } } if (shader_ptr != shader_cache) { diff --git a/drivers/gles2/rasterizer_scene_gles2.cpp b/drivers/gles2/rasterizer_scene_gles2.cpp index 075d7a4425..5ef21998dd 100644 --- a/drivers/gles2/rasterizer_scene_gles2.cpp +++ b/drivers/gles2/rasterizer_scene_gles2.cpp @@ -524,7 +524,11 @@ bool RasterizerSceneGLES2::reflection_probe_instance_begin_render(RID p_instance glGenerateMipmap(GL_TEXTURE_CUBE_MAP); glBindRenderbuffer(GL_RENDERBUFFER, rpi->depth); //resize depth buffer +#ifdef JAVASCRIPT_ENABLED + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, size, size); +#else glRenderbufferStorage(GL_RENDERBUFFER, _DEPTH_COMPONENT24_OES, size, size); +#endif for (int i = 0; i < 6; i++) { glBindFramebuffer(GL_FRAMEBUFFER, rpi->fbo[i]); @@ -990,6 +994,13 @@ void RasterizerSceneGLES2::_add_geometry_with_material(RasterizerStorageGLES2::G e->depth_layer = e->instance->depth_layer; e->priority = p_material->render_priority; + if (has_alpha && p_material->shader->spatial.depth_draw_mode == RasterizerStorageGLES2::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) { + //add element to opaque + RenderList::Element *eo = render_list.add_element(); + *eo = *e; + eo->use_accum_ptr = &eo->use_accum; + } + int rpsize = e->instance->reflection_probe_instances.size(); if (rpsize > 0) { bool first = true; @@ -2056,6 +2067,7 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements, bool prev_unshaded = false; bool prev_instancing = false; + bool prev_depth_prepass = false; state.scene_shader.set_conditional(SceneShaderGLES2::SHADELESS, false); RasterizerStorageGLES2::Material *prev_material = NULL; RasterizerStorageGLES2::Geometry *prev_geometry = NULL; @@ -2131,6 +2143,19 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements, prev_unshaded = unshaded; } + bool depth_prepass = false; + + if (!p_alpha_pass && material->shader && material->shader->spatial.depth_draw_mode == RasterizerStorageGLES2::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) { + depth_prepass = true; + } + + if (depth_prepass != prev_depth_prepass) { + + state.scene_shader.set_conditional(SceneShaderGLES2::USE_DEPTH_PREPASS, depth_prepass); + prev_depth_prepass = depth_prepass; + rebind = true; + } + bool base_pass = !accum_pass && !unshaded; //conditions for a base pass if (base_pass != prev_base_pass) { @@ -2422,6 +2447,7 @@ void RasterizerSceneGLES2::_render_render_list(RenderList::Element **p_elements, state.scene_shader.set_conditional(SceneShaderGLES2::USE_LIGHTMAP_CAPTURE, false); state.scene_shader.set_conditional(SceneShaderGLES2::FOG_DEPTH_ENABLED, false); state.scene_shader.set_conditional(SceneShaderGLES2::FOG_HEIGHT_ENABLED, false); + state.scene_shader.set_conditional(SceneShaderGLES2::USE_RADIANCE_MAP, false); } void RasterizerSceneGLES2::_draw_sky(RasterizerStorageGLES2::Sky *p_sky, const CameraMatrix &p_projection, const Transform &p_transform, bool p_vflip, float p_custom_fov, float p_energy, const Basis &p_sky_orientation) { @@ -2873,7 +2899,7 @@ void RasterizerSceneGLES2::render_shadow(RID p_light, RID p_shadow_atlas, int p_ if (light->type == VS::LIGHT_OMNI) { // cubemap only - if (light->omni_shadow_mode == VS::LIGHT_OMNI_SHADOW_CUBE) { + if (light->omni_shadow_mode == VS::LIGHT_OMNI_SHADOW_CUBE && storage->config.support_write_depth) { int cubemap_index = shadow_cubemaps.size() - 1; // find an appropriate cubemap to render to @@ -2969,7 +2995,7 @@ void RasterizerSceneGLES2::render_shadow(RID p_light, RID p_shadow_atlas, int p_ state.scene_shader.set_conditional(SceneShaderGLES2::RENDER_DEPTH_DUAL_PARABOLOID, false); // convert cubemap to dual paraboloid if needed - if (light->type == VS::LIGHT_OMNI && light->omni_shadow_mode == VS::LIGHT_OMNI_SHADOW_CUBE && p_pass == 5) { + if (light->type == VS::LIGHT_OMNI && (light->omni_shadow_mode == VS::LIGHT_OMNI_SHADOW_CUBE && storage->config.support_write_depth) && p_pass == 5) { ShadowAtlas *shadow_atlas = shadow_atlas_owner.getornull(p_shadow_atlas); glBindFramebuffer(GL_FRAMEBUFFER, shadow_atlas->fbo); @@ -3133,7 +3159,7 @@ void RasterizerSceneGLES2::initialize() { } // cubemaps for shadows - { + if (storage->config.support_write_depth) { //not going to be used int max_shadow_cubemap_sampler_size = 512; int cube_size = max_shadow_cubemap_sampler_size; diff --git a/drivers/gles2/rasterizer_scene_gles2.h b/drivers/gles2/rasterizer_scene_gles2.h index 42ac621e45..0d917f4da2 100644 --- a/drivers/gles2/rasterizer_scene_gles2.h +++ b/drivers/gles2/rasterizer_scene_gles2.h @@ -473,6 +473,7 @@ public: virtual void light_instance_set_transform(RID p_light_instance, const Transform &p_transform); virtual void light_instance_set_shadow_transform(RID p_light_instance, const CameraMatrix &p_projection, const Transform &p_transform, float p_far, float p_split, int p_pass, float p_bias_scale = 1.0); virtual void light_instance_mark_visible(RID p_light_instance); + virtual bool light_instances_can_render_shadow_cube() const { return storage->config.support_write_depth; } LightInstance **render_light_instances; int render_directional_lights; diff --git a/drivers/gles2/rasterizer_storage_gles2.cpp b/drivers/gles2/rasterizer_storage_gles2.cpp index 0622a353df..d00d572ccf 100644 --- a/drivers/gles2/rasterizer_storage_gles2.cpp +++ b/drivers/gles2/rasterizer_storage_gles2.cpp @@ -195,11 +195,11 @@ Ref<Image> RasterizerStorageGLES2::_get_gl_image_and_format(const Ref<Image> &p_ } break; case Image::FORMAT_DXT1: { - r_compressed = true; if (config.s3tc_supported) { r_gl_internal_format = _EXT_COMPRESSED_RGBA_S3TC_DXT1_EXT; r_gl_format = GL_RGBA; r_gl_type = GL_UNSIGNED_BYTE; + r_compressed = true; } else { need_decompress = true; } @@ -846,6 +846,17 @@ void RasterizerStorageGLES2::textures_keep_original(bool p_enable) { config.keep_original_textures = p_enable; } +Size2 RasterizerStorageGLES2::texture_size_with_proxy(RID p_texture) const { + + const Texture *texture = texture_owner.getornull(p_texture); + ERR_FAIL_COND_V(!texture, Size2()); + if (texture->proxy) { + return Size2(texture->proxy->width, texture->proxy->height); + } else { + return Size2(texture->width, texture->height); + } +} + void RasterizerStorageGLES2::texture_set_proxy(RID p_texture, RID p_proxy) { Texture *texture = texture_owner.getornull(p_texture); ERR_FAIL_COND(!texture); @@ -1715,8 +1726,196 @@ RID RasterizerStorageGLES2::mesh_create() { return mesh_owner.make_rid(mesh); } +static PoolVector<uint8_t> _unpack_half_floats(const PoolVector<uint8_t> &array, uint32_t &format, int p_vertices) { + + uint32_t p_format = format; + + static int src_size[VS::ARRAY_MAX]; + static int dst_size[VS::ARRAY_MAX]; + static int to_convert[VS::ARRAY_MAX]; + + int src_stride = 0; + int dst_stride = 0; + + for (int i = 0; i < VS::ARRAY_MAX; i++) { + + to_convert[i] = 0; + if (!(p_format & (1 << i))) { + src_size[i] = 0; + dst_size[i] = 0; + continue; + } + + switch (i) { + + case VS::ARRAY_VERTEX: { + + if (p_format & VS::ARRAY_COMPRESS_VERTEX) { + + if (p_format & VS::ARRAY_FLAG_USE_2D_VERTICES) { + src_size[i] = 4; + dst_size[i] = 8; + to_convert[i] = 2; + } else { + src_size[i] = 8; + dst_size[i] = 12; + to_convert[i] = 3; + } + + format &= ~VS::ARRAY_COMPRESS_VERTEX; + } else { + + if (p_format & VS::ARRAY_FLAG_USE_2D_VERTICES) { + src_size[i] = 8; + dst_size[i] = 8; + } else { + src_size[i] = 12; + dst_size[i] = 12; + } + } + + } break; + case VS::ARRAY_NORMAL: { + + if (p_format & VS::ARRAY_COMPRESS_NORMAL) { + src_size[i] = 4; + dst_size[i] = 4; + } else { + src_size[i] = 12; + dst_size[i] = 12; + } + + } break; + case VS::ARRAY_TANGENT: { + + if (p_format & VS::ARRAY_COMPRESS_TANGENT) { + src_size[i] = 4; + dst_size[i] = 4; + } else { + src_size[i] = 16; + dst_size[i] = 16; + } + + } break; + case VS::ARRAY_COLOR: { + + if (p_format & VS::ARRAY_COMPRESS_COLOR) { + src_size[i] = 4; + dst_size[i] = 4; + } else { + src_size[i] = 16; + dst_size[i] = 16; + } + + } break; + case VS::ARRAY_TEX_UV: { + + if (p_format & VS::ARRAY_COMPRESS_TEX_UV) { + src_size[i] = 4; + to_convert[i] = 2; + format &= ~VS::ARRAY_COMPRESS_TEX_UV; + } else { + src_size[i] = 8; + } + + dst_size[i] = 8; + + } break; + case VS::ARRAY_TEX_UV2: { + + if (p_format & VS::ARRAY_COMPRESS_TEX_UV2) { + src_size[i] = 4; + to_convert[i] = 2; + format &= ~VS::ARRAY_COMPRESS_TEX_UV2; + } else { + src_size[i] = 8; + } + + dst_size[i] = 8; + + } break; + case VS::ARRAY_BONES: { + + if (p_format & VS::ARRAY_FLAG_USE_16_BIT_BONES) { + src_size[i] = 8; + dst_size[i] = 8; + } else { + src_size[i] = 4; + dst_size[i] = 4; + } + + } break; + case VS::ARRAY_WEIGHTS: { + + if (p_format & VS::ARRAY_COMPRESS_WEIGHTS) { + src_size[i] = 8; + dst_size[i] = 8; + } else { + src_size[i] = 16; + dst_size[i] = 16; + } + + } break; + case VS::ARRAY_INDEX: { + + src_size[i] = 0; + dst_size[i] = 0; + + } break; + } + + src_stride += src_size[i]; + dst_stride += dst_size[i]; + } + + PoolVector<uint8_t> ret; + ret.resize(p_vertices * dst_stride); + + PoolVector<uint8_t>::Read r = array.read(); + PoolVector<uint8_t>::Write w = ret.write(); + + int src_offset = 0; + int dst_offset = 0; + + for (int i = 0; i < VS::ARRAY_MAX; i++) { + + if (src_size[i] == 0) { + continue; //no go + } + const uint8_t *rptr = r.ptr(); + uint8_t *wptr = w.ptr(); + if (to_convert[i]) { //converting + + for (int j = 0; j < p_vertices; j++) { + const uint16_t *src = (const uint16_t *)&rptr[src_stride * j + src_offset]; + float *dst = (float *)&wptr[dst_stride * j + dst_offset]; + + for (int k = 0; k < to_convert[i]; k++) { + + dst[k] = Math::half_to_float(src[k]); + } + } + + } else { + //just copy + for (int j = 0; j < p_vertices; j++) { + for (int k = 0; k < src_size[i]; k++) { + wptr[dst_stride * j + dst_offset + k] = rptr[src_stride * j + src_offset + k]; + } + } + } + + src_offset += src_size[i]; + dst_offset += dst_size[i]; + } + + r = PoolVector<uint8_t>::Read(); + w = PoolVector<uint8_t>::Write(); + + return ret; +} + void RasterizerStorageGLES2::mesh_add_surface(RID p_mesh, uint32_t p_format, VS::PrimitiveType p_primitive, const PoolVector<uint8_t> &p_array, int p_vertex_count, const PoolVector<uint8_t> &p_index_array, int p_index_count, const AABB &p_aabb, const Vector<PoolVector<uint8_t> > &p_blend_shapes, const Vector<AABB> &p_bone_aabbs) { - PoolVector<uint8_t> array = p_array; Mesh *mesh = mesh_owner.getornull(p_mesh); ERR_FAIL_COND(!mesh); @@ -1735,6 +1934,7 @@ void RasterizerStorageGLES2::mesh_add_surface(RID p_mesh, uint32_t p_format, VS: Surface::Attrib attribs[VS::ARRAY_MAX]; int stride = 0; + bool uses_half_float = false; for (int i = 0; i < VS::ARRAY_MAX; i++) { @@ -1763,6 +1963,7 @@ void RasterizerStorageGLES2::mesh_add_surface(RID p_mesh, uint32_t p_format, VS: if (p_format & VS::ARRAY_COMPRESS_VERTEX) { attribs[i].type = _GL_HALF_FLOAT_OES; stride += attribs[i].size * 2; + uses_half_float = true; } else { attribs[i].type = GL_FLOAT; stride += attribs[i].size * 4; @@ -1823,6 +2024,7 @@ void RasterizerStorageGLES2::mesh_add_surface(RID p_mesh, uint32_t p_format, VS: if (p_format & VS::ARRAY_COMPRESS_TEX_UV) { attribs[i].type = _GL_HALF_FLOAT_OES; stride += 4; + uses_half_float = true; } else { attribs[i].type = GL_FLOAT; stride += 8; @@ -1838,6 +2040,7 @@ void RasterizerStorageGLES2::mesh_add_surface(RID p_mesh, uint32_t p_format, VS: if (p_format & VS::ARRAY_COMPRESS_TEX_UV2) { attribs[i].type = _GL_HALF_FLOAT_OES; stride += 4; + uses_half_float = true; } else { attribs[i].type = GL_FLOAT; stride += 8; @@ -1900,6 +2103,7 @@ void RasterizerStorageGLES2::mesh_add_surface(RID p_mesh, uint32_t p_format, VS: } //validate sizes + PoolVector<uint8_t> array = p_array; int array_size = stride * p_vertex_count; int index_array_size = 0; @@ -1931,6 +2135,15 @@ void RasterizerStorageGLES2::mesh_add_surface(RID p_mesh, uint32_t p_format, VS: ERR_FAIL_COND(array.size() != array_size); + if (!config.support_half_float_vertices && uses_half_float) { + + uint32_t new_format = p_format; + PoolVector<uint8_t> unpacked_array = _unpack_half_floats(array, new_format, p_vertex_count); + + mesh_add_surface(p_mesh, new_format, p_primitive, unpacked_array, p_vertex_count, p_index_array, p_index_count, p_aabb, p_blend_shapes, p_bone_aabbs); + return; //do not go any further, above function used unpacked stuff will be used instead. + } + if (p_format & VS::ARRAY_FORMAT_INDEX) { index_array_size = attribs[VS::ARRAY_INDEX].stride * p_index_count; @@ -4007,7 +4220,11 @@ void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) { glGenRenderbuffers(1, &rt->depth); glBindRenderbuffer(GL_RENDERBUFFER, rt->depth); +#ifdef JAVASCRIPT_ENABLED + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, rt->width, rt->height); +#else glRenderbufferStorage(GL_RENDERBUFFER, _DEPTH_COMPONENT24_OES, rt->width, rt->height); +#endif glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->depth); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); @@ -4045,7 +4262,8 @@ void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // copy texscreen buffers - { + if (!(rt->flags[RasterizerStorage::RENDER_TARGET_NO_SAMPLING])) { + int w = rt->width; int h = rt->height; @@ -4053,10 +4271,17 @@ void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) { glBindTexture(GL_TEXTURE_2D, rt->copy_screen_effect.color); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glGenFramebuffers(1, &rt->copy_screen_effect.fbo); glBindFramebuffer(GL_FRAMEBUFFER, rt->copy_screen_effect.fbo); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rt->color, 0); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rt->copy_screen_effect.color, 0); + + glClearColor(0, 0, 0, 0); + glClear(GL_COLOR_BUFFER_BIT); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { @@ -4218,7 +4443,11 @@ RID RasterizerStorageGLES2::canvas_light_shadow_buffer_create(int p_width) { glGenRenderbuffers(1, &cls->depth); glBindRenderbuffer(GL_RENDERBUFFER, cls->depth); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, cls->size, cls->height); +#ifdef JAVASCRIPT_ENABLED + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, cls->size, cls->height); +#else + glRenderbufferStorage(GL_RENDERBUFFER, _DEPTH_COMPONENT24_OES, cls->size, cls->height); +#endif glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, cls->depth); glBindRenderbuffer(GL_RENDERBUFFER, 0); @@ -4413,7 +4642,7 @@ bool RasterizerStorageGLES2::free(RID p_rid) { Shader *shader = shader_owner.get(p_rid); - if (shader->shader) { + if (shader->shader && shader->custom_code_id) { shader->shader->free_custom_shader(shader->custom_code_id); } @@ -4650,8 +4879,8 @@ void RasterizerStorageGLES2::initialize() { config.etc1_supported = false; #else config.float_texture_supported = config.extensions.has("GL_ARB_texture_float") || config.extensions.has("GL_OES_texture_float"); - config.s3tc_supported = config.extensions.has("GL_EXT_texture_compression_s3tc"); - config.etc1_supported = config.extensions.has("GL_OES_compressed_ETC1_RGB8_texture"); + config.s3tc_supported = config.extensions.has("GL_EXT_texture_compression_s3tc") || config.extensions.has("WEBGL_compressed_texture_s3tc"); + config.etc1_supported = config.extensions.has("GL_OES_compressed_ETC1_RGB8_texture") || config.extensions.has("WEBGL_compressed_texture_etc1"); #endif #ifdef GLES_OVER_GL config.use_rgba_2d_shadows = false; @@ -4665,6 +4894,19 @@ void RasterizerStorageGLES2::initialize() { config.support_32_bits_indices = config.extensions.has("GL_OES_element_index_uint"); #endif +#ifdef GLES_OVER_GL + config.support_write_depth = true; +#else + config.support_write_depth = config.extensions.has("GL_EXT_frag_depth"); +#endif + +#ifdef JAVASCRIPT_ENABLED + config.support_half_float_vertices = false; +#else + //every other platform, be it mobile or desktop, supports this (even if not in the GLES2 spec). + config.support_half_float_vertices = true; +#endif + frame.count = 0; frame.delta = 0; frame.current_rt = NULL; diff --git a/drivers/gles2/rasterizer_storage_gles2.h b/drivers/gles2/rasterizer_storage_gles2.h index ae14aaa9c0..ba48ddd185 100644 --- a/drivers/gles2/rasterizer_storage_gles2.h +++ b/drivers/gles2/rasterizer_storage_gles2.h @@ -80,6 +80,8 @@ public: bool use_rgba_2d_shadows; bool support_32_bits_indices; + bool support_write_depth; + bool support_half_float_vertices; } config; struct Resources { @@ -340,6 +342,7 @@ public: virtual void textures_keep_original(bool p_enable); virtual void texture_set_proxy(RID p_texture, RID p_proxy); + virtual Size2 texture_size_with_proxy(RID p_texture) const; virtual void texture_set_detect_3d_callback(RID p_texture, VisualServer::TextureDetectCallback p_callback, void *p_userdata); virtual void texture_set_detect_srgb_callback(RID p_texture, VisualServer::TextureDetectCallback p_callback, void *p_userdata); diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp index bff031b93a..fa1242ceed 100644 --- a/drivers/gles2/shader_compiler_gles2.cpp +++ b/drivers/gles2/shader_compiler_gles2.cpp @@ -806,9 +806,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { actions[VS::SHADER_CANVAS_ITEM].usage_defines["SCREEN_PIXEL_SIZE"] = "@SCREEN_UV"; actions[VS::SHADER_CANVAS_ITEM].usage_defines["NORMAL"] = "#define NORMAL_USED\n"; actions[VS::SHADER_CANVAS_ITEM].usage_defines["NORMALMAP"] = "#define NORMALMAP_USED\n"; - actions[VS::SHADER_CANVAS_ITEM].usage_defines["SHADOW_COLOR"] = "#define SHADOW_COLOR_USED\n"; actions[VS::SHADER_CANVAS_ITEM].usage_defines["LIGHT"] = "#define USE_LIGHT_SHADER_CODE\n"; - actions[VS::SHADER_CANVAS_ITEM].render_mode_defines["skip_vertex_transform"] = "#define SKIP_TRANSFORM_USED\n"; /** SPATIAL SHADER **/ @@ -831,7 +829,6 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { actions[VS::SHADER_SPATIAL].renames["POINT_SIZE"] = "gl_PointSize"; // gl_InstanceID is not available in OpenGL ES 2.0 actions[VS::SHADER_SPATIAL].renames["INSTANCE_ID"] = "0"; - actions[VS::SHADER_SPATIAL].renames["OUTPUT_IS_SRGB"] = "SHADER_IS_SRGB"; //builtins @@ -863,12 +860,15 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { actions[VS::SHADER_SPATIAL].renames["SCREEN_UV"] = "screen_uv"; actions[VS::SHADER_SPATIAL].renames["SCREEN_TEXTURE"] = "screen_texture"; actions[VS::SHADER_SPATIAL].renames["DEPTH_TEXTURE"] = "depth_buffer"; - actions[VS::SHADER_SPATIAL].renames["SIDE"] = "side"; + // Defined in GLES3, but not available in GLES2 + //actions[VS::SHADER_SPATIAL].renames["DEPTH"] = "gl_FragDepth"; actions[VS::SHADER_SPATIAL].renames["ALPHA_SCISSOR"] = "alpha_scissor"; + actions[VS::SHADER_SPATIAL].renames["OUTPUT_IS_SRGB"] = "SHADER_IS_SRGB"; //for light actions[VS::SHADER_SPATIAL].renames["VIEW"] = "view"; actions[VS::SHADER_SPATIAL].renames["LIGHT_COLOR"] = "light_color"; + actions[VS::SHADER_SPATIAL].renames["LIGHT"] = "light"; actions[VS::SHADER_SPATIAL].renames["ATTENUATION"] = "attenuation"; actions[VS::SHADER_SPATIAL].renames["DIFFUSE_LIGHT"] = "diffuse_light"; actions[VS::SHADER_SPATIAL].renames["SPECULAR_LIGHT"] = "specular_light"; @@ -903,6 +903,12 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { actions[VS::SHADER_SPATIAL].render_mode_defines["skip_vertex_transform"] = "#define SKIP_TRANSFORM_USED\n"; actions[VS::SHADER_SPATIAL].render_mode_defines["world_vertex_coords"] = "#define VERTEX_WORLD_COORDS_USED\n"; + // Defined in GLES3, could be implemented in GLES2 too if there's a need for it + //actions[VS::SHADER_SPATIAL].render_mode_defines["ensure_correct_normals"] = "#define ENSURE_CORRECT_NORMALS\n"; + // Defined in GLES3, might not be possible in GLES2 as gl_FrontFacing is not available + //actions[VS::SHADER_SPATIAL].render_mode_defines["cull_front"] = "#define DO_SIDE_CHECK\n"; + //actions[VS::SHADER_SPATIAL].render_mode_defines["cull_disabled"] = "#define DO_SIDE_CHECK\n"; + bool force_lambert = GLOBAL_GET("rendering/quality/shading/force_lambert_over_burley"); if (!force_lambert) { @@ -928,27 +934,7 @@ ShaderCompilerGLES2::ShaderCompilerGLES2() { actions[VS::SHADER_SPATIAL].render_mode_defines["shadows_disabled"] = "#define SHADOWS_DISABLED\n"; actions[VS::SHADER_SPATIAL].render_mode_defines["ambient_light_disabled"] = "#define AMBIENT_LIGHT_DISABLED\n"; - /* PARTICLES SHADER */ - - actions[VS::SHADER_PARTICLES].renames["COLOR"] = "out_color"; - actions[VS::SHADER_PARTICLES].renames["VELOCITY"] = "out_velocity_active.xyz"; - actions[VS::SHADER_PARTICLES].renames["MASS"] = "mass"; - actions[VS::SHADER_PARTICLES].renames["ACTIVE"] = "shader_active"; - actions[VS::SHADER_PARTICLES].renames["RESTART"] = "restart"; - actions[VS::SHADER_PARTICLES].renames["CUSTOM"] = "out_custom"; - actions[VS::SHADER_PARTICLES].renames["TRANSFORM"] = "xform"; - actions[VS::SHADER_PARTICLES].renames["TIME"] = "time"; - actions[VS::SHADER_PARTICLES].renames["LIFETIME"] = "lifetime"; - actions[VS::SHADER_PARTICLES].renames["DELTA"] = "local_delta"; - actions[VS::SHADER_PARTICLES].renames["NUMBER"] = "particle_number"; - actions[VS::SHADER_PARTICLES].renames["INDEX"] = "index"; - actions[VS::SHADER_PARTICLES].renames["GRAVITY"] = "current_gravity"; - actions[VS::SHADER_PARTICLES].renames["EMISSION_TRANSFORM"] = "emission_transform"; - actions[VS::SHADER_PARTICLES].renames["RANDOM_SEED"] = "random_seed"; - - actions[VS::SHADER_PARTICLES].render_mode_defines["disable_force"] = "#define DISABLE_FORCE\n"; - actions[VS::SHADER_PARTICLES].render_mode_defines["disable_velocity"] = "#define DISABLE_VELOCITY\n"; - actions[VS::SHADER_PARTICLES].render_mode_defines["keep_data"] = "#define ENABLE_KEEP_DATA\n"; + // No defines for particle shaders in GLES2, there are no GPU particles vertex_name = "vertex"; fragment_name = "fragment"; diff --git a/drivers/gles2/shader_gles2.cpp b/drivers/gles2/shader_gles2.cpp index 65d4b63bb9..5e259a01f0 100644 --- a/drivers/gles2/shader_gles2.cpp +++ b/drivers/gles2/shader_gles2.cpp @@ -242,6 +242,11 @@ ShaderGLES2::Version *ShaderGLES2::get_current_version() { strings.push_back("#define USE_GLES_OVER_GL\n"); #else strings.push_back("#version 100\n"); +//angle does not like +#ifdef JAVASCRIPT_ENABLED + strings.push_back("#define USE_HIGHP_PRECISION\n"); +#endif + #endif int define_line_ofs = 1; @@ -514,6 +519,10 @@ ShaderGLES2::Version *ShaderGLES2::get_current_version() { glUseProgram(0); v.ok = true; + if (cc) { + cc->versions.insert(conditional_version.version); + } + return &v; } @@ -678,9 +687,28 @@ void ShaderGLES2::set_custom_shader(uint32_t p_code_id) { } void ShaderGLES2::free_custom_shader(uint32_t p_code_id) { + ERR_FAIL_COND(!custom_code_map.has(p_code_id)); - if (conditional_version.code_version == p_code_id) - conditional_version.code_version = 0; + if (conditional_version.code_version == p_code_id) { + conditional_version.code_version = 0; //do not keep using a version that is going away + unbind(); + } + + VersionKey key; + key.code_version = p_code_id; + for (Set<uint32_t>::Element *E = custom_code_map[p_code_id].versions.front(); E; E = E->next()) { + key.version = E->get(); + ERR_CONTINUE(!version_map.has(key)); + Version &v = version_map[key]; + + glDeleteShader(v.vert_id); + glDeleteShader(v.frag_id); + glDeleteProgram(v.id); + memdelete_arr(v.uniform_location); + v.id = 0; + + version_map.erase(key); + } custom_code_map.erase(p_code_id); } diff --git a/drivers/gles2/shader_gles2.h b/drivers/gles2/shader_gles2.h index 468971471c..d493880d0b 100644 --- a/drivers/gles2/shader_gles2.h +++ b/drivers/gles2/shader_gles2.h @@ -104,6 +104,7 @@ private: Vector<StringName> texture_uniforms; Vector<StringName> custom_uniforms; Vector<CharString> custom_defines; + Set<uint32_t> versions; }; struct Version { @@ -465,6 +466,8 @@ public: void set_custom_shader(uint32_t p_code_id); void free_custom_shader(uint32_t p_code_id); + uint32_t get_version_key() const { return conditional_version.version; } + void set_uniform_default(int p_idx, const Variant &p_value) { if (p_value.get_type() == Variant::NIL) { diff --git a/drivers/gles2/shaders/canvas.glsl b/drivers/gles2/shaders/canvas.glsl index 0de60d7421..c4a8c8b990 100644 --- a/drivers/gles2/shaders/canvas.glsl +++ b/drivers/gles2/shaders/canvas.glsl @@ -6,8 +6,8 @@ #define mediump #define highp #else -precision mediump float; -precision mediump int; +precision highp float; +precision highp int; #endif uniform highp mat4 projection_matrix; @@ -215,14 +215,42 @@ VERTEX_SHADER_CODE /* clang-format off */ [fragment] +#ifndef USE_GLES_OVER_GL + +#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable +#define texture2DLod(img, coord, lod) texture2DLodEXT(img, coord, lod) +#define textureCubeLod(img, coord, lod) textureCubeLodEXT(img, coord, lod) +#endif + +#endif + +#ifdef GL_ARB_shader_texture_lod +#extension GL_ARB_shader_texture_lod : enable +#endif + + +#if !defined(GL_EXT_shader_texture_lod) && !defined(GL_ARB_shader_texture_lod) +#define texture2DLod(img, coord, lod) texture2D(img, coord, lod) +#define textureCubeLod(img, coord, lod) textureCube(img, coord, lod) +#endif + + + + #ifdef USE_GLES_OVER_GL #define lowp #define mediump #define highp #else +#if defined(USE_HIGHP_PRECISION) +precision highp float; +precision highp int; +#else precision mediump float; precision mediump int; #endif +#endif uniform sampler2D color_texture; // texunit:-1 /* clang-format on */ @@ -433,19 +461,14 @@ FRAGMENT_SHADER_CODE #ifdef SHADOW_USE_GRADIENT -#define SHADOW_TEST(m_ofs) \ - { \ - highp float sd = SHADOW_DEPTH(shadow_texture, vec2(m_ofs, sh)); \ - shadow_attenuation += 1.0 - smoothstep(sd, sd + shadow_gradient, sz); \ - } + /* clang-format off */ + /* GLSL es 100 doesn't support line continuation characters(backslashes) */ +#define SHADOW_TEST(m_ofs) { highp float sd = SHADOW_DEPTH(shadow_texture, vec2(m_ofs, sh)); shadow_attenuation += 1.0 - smoothstep(sd, sd + shadow_gradient, sz); } #else -#define SHADOW_TEST(m_ofs) \ - { \ - highp float sd = SHADOW_DEPTH(shadow_texture, vec2(m_ofs, sh)); \ - shadow_attenuation += step(sz, sd); \ - } +#define SHADOW_TEST(m_ofs) { highp float sd = SHADOW_DEPTH(shadow_texture, vec2(m_ofs, sh)); shadow_attenuation += step(sz, sd); } + /* clang-format on */ #endif diff --git a/drivers/gles2/shaders/copy.glsl b/drivers/gles2/shaders/copy.glsl index f3c2a7eec4..931b3f3708 100644 --- a/drivers/gles2/shaders/copy.glsl +++ b/drivers/gles2/shaders/copy.glsl @@ -6,8 +6,8 @@ #define mediump #define highp #else -precision mediump float; -precision mediump int; +precision highp float; +precision highp int; #endif attribute highp vec4 vertex_attrib; // attrib:0 @@ -29,7 +29,7 @@ varying vec2 uv_interp; varying vec2 uv2_interp; #ifdef USE_COPY_SECTION -uniform vec4 copy_section; +uniform highp vec4 copy_section; #endif void main() { @@ -61,9 +61,14 @@ void main() { #define mediump #define highp #else +#if defined(USE_HIGHP_PRECISION) +precision highp float; +precision highp int; +#else precision mediump float; precision mediump int; #endif +#endif #if defined(USE_CUBEMAP) || defined(USE_PANORAMA) varying vec3 cube_interp; diff --git a/drivers/gles2/shaders/cubemap_filter.glsl b/drivers/gles2/shaders/cubemap_filter.glsl index 06274a7698..7643297a14 100644 --- a/drivers/gles2/shaders/cubemap_filter.glsl +++ b/drivers/gles2/shaders/cubemap_filter.glsl @@ -6,8 +6,8 @@ #define mediump #define highp #else -precision mediump float; -precision mediump int; +precision highp float; +precision highp int; #endif attribute highp vec2 vertex; // attrib:0 @@ -25,22 +25,42 @@ void main() { /* clang-format off */ [fragment] +#ifndef USE_GLES_OVER_GL + +#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable +#define texture2DLod(img, coord, lod) texture2DLodEXT(img, coord, lod) +#define textureCubeLod(img, coord, lod) textureCubeLodEXT(img, coord, lod) +#endif + +#endif + +#ifdef GL_ARB_shader_texture_lod #extension GL_ARB_shader_texture_lod : enable +#endif -#ifndef GL_ARB_shader_texture_lod -#define texture2DLod(img, coord, lod) texture2D(img, coord) -#define textureCubeLod(img, coord, lod) textureCube(img, coord) +#if !defined(GL_EXT_shader_texture_lod) && !defined(GL_ARB_shader_texture_lod) +#define texture2DLod(img, coord, lod) texture2D(img, coord, lod) +#define textureCubeLod(img, coord, lod) textureCube(img, coord, lod) #endif + + #ifdef USE_GLES_OVER_GL #define lowp #define mediump #define highp #else +#if defined(USE_HIGHP_PRECISION) +precision highp float; +precision highp int; +#else precision mediump float; precision mediump int; #endif +#endif + #ifdef USE_SOURCE_PANORAMA uniform sampler2D source_panorama; //texunit:0 #else @@ -118,7 +138,13 @@ vec3 texelCoordToVec(vec2 uv, int faceID) { faceUvVectors[5][2] = vec3(0.0, 0.0, 1.0); // +z face // out = u * s_faceUv[0] + v * s_faceUv[1] + s_faceUv[2]. - vec3 result = (faceUvVectors[faceID][0] * uv.x) + (faceUvVectors[faceID][1] * uv.y) + faceUvVectors[faceID][2]; + vec3 result; + for (int i = 0; i < 6; i++) { + if (i == faceID) { + result = (faceUvVectors[i][0] * uv.x) + (faceUvVectors[i][1] * uv.y) + faceUvVectors[i][2]; + break; + } + } return normalize(result); } diff --git a/drivers/gles2/shaders/scene.glsl b/drivers/gles2/shaders/scene.glsl index b2b9458ed2..6c3d3baccd 100644 --- a/drivers/gles2/shaders/scene.glsl +++ b/drivers/gles2/shaders/scene.glsl @@ -655,20 +655,41 @@ VERTEX_SHADER_CODE /* clang-format off */ [fragment] + +#ifndef USE_GLES_OVER_GL + +#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable +#define texture2DLod(img, coord, lod) texture2DLodEXT(img, coord, lod) +#define textureCubeLod(img, coord, lod) textureCubeLodEXT(img, coord, lod) +#endif + +#endif + +#ifdef GL_ARB_shader_texture_lod #extension GL_ARB_shader_texture_lod : enable +#endif -#ifndef GL_ARB_shader_texture_lod -#define texture2DLod(img, coord, lod) texture2D(img, coord) -#define textureCubeLod(img, coord, lod) textureCube(img, coord) +#if !defined(GL_EXT_shader_texture_lod) && !defined(GL_ARB_shader_texture_lod) +#define texture2DLod(img, coord, lod) texture2D(img, coord, lod) +#define textureCubeLod(img, coord, lod) textureCube(img, coord, lod) #endif + + + #ifdef USE_GLES_OVER_GL #define lowp #define mediump #define highp #else -precision mediump float; +#if defined(USE_HIGHP_PRECISION) +precision highp float; precision highp int; +#else +precision mediump float; +precision mediump int; +#endif #endif #include "stdlib.glsl" @@ -1477,6 +1498,12 @@ FRAGMENT_SHADER_CODE } #endif +#ifdef USE_DEPTH_PREPASS + if (alpha < 0.99) { + discard; + } +#endif + #ifdef BASE_PASS //none #ifdef USE_RADIANCE_MAP diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp index 79fec63db0..b8f0965af8 100644 --- a/drivers/gles3/rasterizer_canvas_gles3.cpp +++ b/drivers/gles3/rasterizer_canvas_gles3.cpp @@ -146,10 +146,15 @@ void RasterizerCanvasGLES3::canvas_begin() { if (storage->frame.current_rt && storage->frame.clear_request) { // a clear request may be pending, so do it + bool transparent = storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]; - glClearColor(storage->frame.clear_request_color.r, storage->frame.clear_request_color.g, storage->frame.clear_request_color.b, storage->frame.clear_request_color.a); + glClearColor(storage->frame.clear_request_color.r, + storage->frame.clear_request_color.g, + storage->frame.clear_request_color.b, + transparent ? storage->frame.clear_request_color.a : 1.0); glClear(GL_COLOR_BUFFER_BIT); storage->frame.clear_request = false; + glColorMask(1, 1, 1, transparent ? 1 : 0); } reset_canvas(); @@ -193,6 +198,7 @@ void RasterizerCanvasGLES3::canvas_end() { glBindVertexArray(0); glBindBufferBase(GL_UNIFORM_BUFFER, 0, 0); + glColorMask(1, 1, 1, 1); state.using_texture_rect = false; state.using_ninepatch = false; diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index d53b27eb88..966466d9bc 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -1832,6 +1832,7 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) { storage->info.render.vertices_count += s->index_array_len * amount; } else #endif + if (s->index_array_len > 0) { glDrawElementsInstanced(gl_primitive[s->primitive], s->index_array_len, (s->array_len >= (1 << 16)) ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT, 0, amount); @@ -2677,13 +2678,6 @@ void RasterizerSceneGLES3::_setup_environment(Environment *env, const CameraMatr glBindBuffer(GL_UNIFORM_BUFFER, 0); } -// Drop -O3 for this function as it triggers a GCC bug up until at least GCC 8.2.1. -// This refers to GH issue #19633. -// The bug has been reported to the GCC project. -#if defined(__GNUC__) && !defined(__clang__) -#pragma GCC push_options -#pragma GCC optimize("-O2") -#endif void RasterizerSceneGLES3::_setup_directional_light(int p_index, const Transform &p_camera_inverse_transform, bool p_use_shadows) { LightInstance *li = directional_lights[p_index]; @@ -2784,7 +2778,7 @@ void RasterizerSceneGLES3::_setup_directional_light(int p_index, const Transform CameraMatrix shadow_mtx = rectm * bias * li->shadow_transform[j].camera * modelview; - store_camera(shadow_mtx, &ubo_data.shadow_matrix1[16 * j]); + store_camera(shadow_mtx, &ubo_data.shadow.matrix[16 * j]); ubo_data.light_clamp[0] = atlas_rect.position.x; ubo_data.light_clamp[1] = atlas_rect.position.y; @@ -2801,9 +2795,6 @@ void RasterizerSceneGLES3::_setup_directional_light(int p_index, const Transform glBindBufferBase(GL_UNIFORM_BUFFER, 3, state.directional_ubo); } -#if defined(__GNUC__) && !defined(__clang__) -#pragma GCC pop_options -#endif void RasterizerSceneGLES3::_setup_lights(RID *p_light_cull_result, int p_light_cull_count, const Transform &p_camera_inverse_transform, const CameraMatrix &p_camera_projection, RID p_shadow_atlas) { @@ -2898,7 +2889,7 @@ void RasterizerSceneGLES3::_setup_lights(RID *p_light_cull_result, int p_light_c Transform proj = (p_camera_inverse_transform * li->transform).inverse(); - store_transform(proj, ubo_data.shadow_matrix1); + store_transform(proj, ubo_data.shadow.matrix1); ubo_data.light_params[3] = 1.0; //means it has shadow ubo_data.light_clamp[0] = float(x) / atlas_size; @@ -2987,7 +2978,7 @@ void RasterizerSceneGLES3::_setup_lights(RID *p_light_cull_result, int p_light_c CameraMatrix shadow_mtx = rectm * bias * li->shadow_transform[0].camera * modelview; - store_camera(shadow_mtx, ubo_data.shadow_matrix1); + store_camera(shadow_mtx, ubo_data.shadow.matrix1); } li->light_index = state.spot_light_count; @@ -4141,9 +4132,19 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const glDepthFunc(GL_LEQUAL); - state.used_contact_shadows = true; + state.used_contact_shadows = false; + + for (int i = 0; i < p_light_cull_count; i++) { + + ERR_BREAK(i >= RenderList::MAX_LIGHTS); + + LightInstance *li = light_instance_owner.getptr(p_light_cull_result[i]); + if (li->light_ptr->param[VS::LIGHT_PARAM_CONTACT_SHADOW_SIZE] > CMP_EPSILON) { + state.used_contact_shadows = true; + } + } - if (!storage->config.no_depth_prepass && storage->frame.current_rt && state.debug_draw != VS::VIEWPORT_DEBUG_DRAW_OVERDRAW) { //detect with state.used_contact_shadows too + if (!storage->config.no_depth_prepass && storage->frame.current_rt && state.debug_draw != VS::VIEWPORT_DEBUG_DRAW_OVERDRAW && !storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_NO_3D_EFFECTS]) { //detect with state.used_contact_shadows too //pre z pass glDisable(GL_BLEND); diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h index 9772b5dd23..325617745a 100644 --- a/drivers/gles3/rasterizer_scene_gles3.h +++ b/drivers/gles3/rasterizer_scene_gles3.h @@ -569,10 +569,15 @@ public: float light_params[4]; //spot attenuation, spot angle, specular, shadow enabled float light_clamp[4]; float light_shadow_color_contact[4]; - float shadow_matrix1[16]; //up to here for spot and omni, rest is for directional - float shadow_matrix2[16]; - float shadow_matrix3[16]; - float shadow_matrix4[16]; + union { + struct { + float matrix1[16]; //up to here for spot and omni, rest is for directional + float matrix2[16]; + float matrix3[16]; + float matrix4[16]; + }; + float matrix[4 * 16]; + } shadow; float shadow_split_offsets[4]; }; diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp index 24673c8755..4ef7db8ea9 100644 --- a/drivers/gles3/rasterizer_storage_gles3.cpp +++ b/drivers/gles3/rasterizer_storage_gles3.cpp @@ -112,15 +112,6 @@ void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid }, target, offset, data, size); /* clang-format on */ } - -void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) { - - /* clang-format off */ - EM_ASM({ - GLctx.bufferSubData($0, $1, HEAPU8, $2, $3); - }, target, offset, data, size); - /* clang-format on */ -} #endif void glTexStorage2DCustom(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type) { @@ -1056,6 +1047,128 @@ Ref<Image> RasterizerStorageGLES3::texture_get_data(RID p_texture, int p_layer) return texture->images[p_layer]; } + // 3D textures and 2D texture arrays need special treatment, as the glGetTexImage reads **the whole** + // texture to host-memory. 3D textures and 2D texture arrays are potentially very big, so reading + // everything just to throw everything but one layer away is A Bad Idea. + // + // Unfortunately, to solve this, the copy shader has to read the data out via a shader and store it + // in a temporary framebuffer. The data from the framebuffer can then be read using glReadPixels. + if (texture->type == VS::TEXTURE_TYPE_2D_ARRAY || texture->type == VS::TEXTURE_TYPE_3D) { + // can't read a layer that doesn't exist + ERR_FAIL_INDEX_V(p_layer, texture->alloc_depth, Ref<Image>()); + + // get some information about the texture + Image::Format real_format; + GLenum gl_format; + GLenum gl_internal_format; + GLenum gl_type; + + bool compressed; + bool srgb; + + _get_gl_image_and_format( + Ref<Image>(), + texture->format, + texture->flags, + real_format, + gl_format, + gl_internal_format, + gl_type, + compressed, + srgb); + + PoolVector<uint8_t> data; + + // TODO need to decide between RgbaUnorm and RgbaFloat32 for output + int data_size = Image::get_image_data_size(texture->alloc_width, texture->alloc_height, Image::FORMAT_RGBA8, false); + + data.resize(data_size * 2); // add some more memory at the end, just in case for buggy drivers + PoolVector<uint8_t>::Write wb = data.write(); + + // generate temporary resources + GLuint tmp_fbo; + glGenFramebuffers(1, &tmp_fbo); + + GLuint tmp_color_attachment; + glGenTextures(1, &tmp_color_attachment); + + // now bring the OpenGL context into the correct state + { + glBindFramebuffer(GL_FRAMEBUFFER, tmp_fbo); + + // back color attachment with memory, then set properties + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, tmp_color_attachment); + // TODO support HDR properly + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texture->alloc_width, texture->alloc_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + // use the color texture as color attachment for this render pass + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tmp_color_attachment, 0); + + // more GL state, wheeeey + glDepthMask(GL_FALSE); + glDisable(GL_DEPTH_TEST); + glDisable(GL_CULL_FACE); + glDisable(GL_BLEND); + glDepthFunc(GL_LEQUAL); + glColorMask(1, 1, 1, 1); + + // use volume tex for reading + glActiveTexture(GL_TEXTURE0); + glBindTexture(texture->target, texture->tex_id); + + glViewport(0, 0, texture->alloc_width, texture->alloc_height); + + // set up copy shader for proper use + shaders.copy.set_conditional(CopyShaderGLES3::LINEAR_TO_SRGB, !srgb); + shaders.copy.set_conditional(CopyShaderGLES3::USE_TEXTURE3D, texture->type == VS::TEXTURE_TYPE_3D); + shaders.copy.set_conditional(CopyShaderGLES3::USE_TEXTURE2DARRAY, texture->type == VS::TEXTURE_TYPE_2D_ARRAY); + shaders.copy.bind(); + + // calculate the normalized z coordinate for the layer + float layer = (float)p_layer / (float)texture->alloc_depth; + + shaders.copy.set_uniform(CopyShaderGLES3::LAYER, layer); + + glBindVertexArray(resources.quadie_array); + } + + // clear color attachment, then perform copy + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT); + + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + + // read the image into the host buffer + glReadPixels(0, 0, texture->alloc_width, texture->alloc_height, GL_RGBA, GL_UNSIGNED_BYTE, &wb[0]); + + // remove temp resources and unset some GL state + { + shaders.copy.set_conditional(CopyShaderGLES3::USE_TEXTURE3D, false); + shaders.copy.set_conditional(CopyShaderGLES3::USE_TEXTURE2DARRAY, false); + shaders.copy.set_conditional(CopyShaderGLES3::LINEAR_TO_SRGB, false); + + glBindFramebuffer(GL_FRAMEBUFFER, 0); + + glDeleteTextures(1, &tmp_color_attachment); + glDeleteFramebuffers(1, &tmp_fbo); + } + + wb = PoolVector<uint8_t>::Write(); + + data.resize(data_size); + + Image *img = memnew(Image(texture->alloc_width, texture->alloc_height, false, Image::FORMAT_RGBA8, data)); + if (!texture->compressed) { + img->convert(real_format); + } + + return Ref<Image>(img); + } + #ifdef GLES_OVER_GL Image::Format real_format; @@ -1172,9 +1285,8 @@ Ref<Image> RasterizerStorageGLES3::texture_get_data(RID p_texture, int p_layer) glViewport(0, 0, texture->alloc_width, texture->alloc_height); - shaders.copy.bind(); - shaders.copy.set_conditional(CopyShaderGLES3::LINEAR_TO_SRGB, !srgb); + shaders.copy.bind(); glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); @@ -1566,6 +1678,17 @@ RID RasterizerStorageGLES3::texture_create_radiance_cubemap(RID p_source, int p_ return texture_owner.make_rid(ctex); } +Size2 RasterizerStorageGLES3::texture_size_with_proxy(RID p_texture) const { + + const Texture *texture = texture_owner.getornull(p_texture); + ERR_FAIL_COND_V(!texture, Size2()); + if (texture->proxy) { + return Size2(texture->proxy->width, texture->proxy->height); + } else { + return Size2(texture->width, texture->height); + } +} + void RasterizerStorageGLES3::texture_set_proxy(RID p_texture, RID p_proxy) { Texture *texture = texture_owner.get(p_texture); @@ -7365,7 +7488,7 @@ bool RasterizerStorageGLES3::free(RID p_rid) { // delete the texture Shader *shader = shader_owner.get(p_rid); - if (shader->shader) + if (shader->shader && shader->custom_code_id) shader->shader->free_custom_shader(shader->custom_code_id); if (shader->dirty_list.in_list()) diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h index 811f9c8d80..88897e1e07 100644 --- a/drivers/gles3/rasterizer_storage_gles3.h +++ b/drivers/gles3/rasterizer_storage_gles3.h @@ -46,7 +46,6 @@ // WebGL 2.0 has no MapBufferRange/UnmapBuffer, but offers a non-ES style BufferSubData API instead. #ifdef __EMSCRIPTEN__ void glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); -void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); #endif class RasterizerCanvasGLES3; @@ -375,6 +374,8 @@ public: virtual void texture_set_detect_normal_callback(RID p_texture, VisualServer::TextureDetectCallback p_callback, void *p_userdata); virtual void texture_set_proxy(RID p_texture, RID p_proxy); + virtual Size2 texture_size_with_proxy(RID p_texture) const; + virtual void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable); /* SKY API */ diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp index cda6dac506..4d6f37e093 100644 --- a/drivers/gles3/shader_compiler_gles3.cpp +++ b/drivers/gles3/shader_compiler_gles3.cpp @@ -963,9 +963,9 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() { actions[VS::SHADER_PARTICLES].renames["EMISSION_TRANSFORM"] = "emission_transform"; actions[VS::SHADER_PARTICLES].renames["RANDOM_SEED"] = "random_seed"; - actions[VS::SHADER_SPATIAL].render_mode_defines["disable_force"] = "#define DISABLE_FORCE\n"; - actions[VS::SHADER_SPATIAL].render_mode_defines["disable_velocity"] = "#define DISABLE_VELOCITY\n"; - actions[VS::SHADER_SPATIAL].render_mode_defines["keep_data"] = "#define ENABLE_KEEP_DATA\n"; + actions[VS::SHADER_PARTICLES].render_mode_defines["disable_force"] = "#define DISABLE_FORCE\n"; + actions[VS::SHADER_PARTICLES].render_mode_defines["disable_velocity"] = "#define DISABLE_VELOCITY\n"; + actions[VS::SHADER_PARTICLES].render_mode_defines["keep_data"] = "#define ENABLE_KEEP_DATA\n"; vertex_name = "vertex"; fragment_name = "fragment"; diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp index edc2a6c054..2db0223edd 100644 --- a/drivers/gles3/shader_gles3.cpp +++ b/drivers/gles3/shader_gles3.cpp @@ -559,6 +559,9 @@ ShaderGLES3::Version *ShaderGLES3::get_current_version() { glUseProgram(0); v.ok = true; + if (cc) { + cc->versions.insert(conditional_version.version); + } return &v; } @@ -741,8 +744,26 @@ void ShaderGLES3::set_custom_shader(uint32_t p_code_id) { void ShaderGLES3::free_custom_shader(uint32_t p_code_id) { ERR_FAIL_COND(!custom_code_map.has(p_code_id)); - if (conditional_version.code_version == p_code_id) - conditional_version.code_version = 0; //bye + if (conditional_version.code_version == p_code_id) { + conditional_version.code_version = 0; //do not keep using a version that is going away + unbind(); + } + + VersionKey key; + key.code_version = p_code_id; + for (Set<uint32_t>::Element *E = custom_code_map[p_code_id].versions.front(); E; E = E->next()) { + key.version = E->get(); + ERR_CONTINUE(!version_map.has(key)); + Version &v = version_map[key]; + + glDeleteShader(v.vert_id); + glDeleteShader(v.frag_id); + glDeleteProgram(v.id); + memdelete_arr(v.uniform_location); + v.id = 0; + + version_map.erase(key); + } custom_code_map.erase(p_code_id); } diff --git a/drivers/gles3/shader_gles3.h b/drivers/gles3/shader_gles3.h index 1f98f4883d..1ed30986bf 100644 --- a/drivers/gles3/shader_gles3.h +++ b/drivers/gles3/shader_gles3.h @@ -117,6 +117,7 @@ private: uint32_t version; Vector<StringName> texture_uniforms; Vector<CharString> custom_defines; + Set<uint32_t> versions; }; struct Version { diff --git a/drivers/gles3/shaders/copy.glsl b/drivers/gles3/shaders/copy.glsl index 3b36bc7cc1..e1a0813efc 100644 --- a/drivers/gles3/shaders/copy.glsl +++ b/drivers/gles3/shaders/copy.glsl @@ -61,19 +61,35 @@ in vec3 cube_interp; #else in vec2 uv_interp; #endif -/* clang-format on */ #ifdef USE_ASYM_PANO uniform highp mat4 pano_transform; uniform highp vec4 asym_proj; #endif +// These definitions are here because the shader-wrapper builder does +// not understand `#elif defined()` +#ifdef USE_TEXTURE3D +#endif +#ifdef USE_TEXTURE2DARRAY +#endif + #ifdef USE_CUBEMAP uniform samplerCube source_cube; //texunit:0 +#elif defined(USE_TEXTURE3D) +uniform sampler3D source_3d; //texunit:0 +#elif defined(USE_TEXTURE2DARRAY) +uniform sampler2DArray source_2d_array; //texunit:0 #else uniform sampler2D source; //texunit:0 #endif +/* clang-format on */ + +#if defined(USE_TEXTURE3D) || defined(USE_TEXTURE2DARRAY) +uniform float layer; +#endif + #ifdef USE_MULTIPLIER uniform float multiplier; #endif @@ -97,7 +113,6 @@ vec4 texturePanorama(vec3 normal, sampler2D pano) { #endif -uniform float stuff; uniform vec2 pixel_size; in vec2 uv2_interp; @@ -147,6 +162,10 @@ void main() { #elif defined(USE_CUBEMAP) vec4 color = texture(source_cube, normalize(cube_interp)); +#elif defined(USE_TEXTURE3D) + vec4 color = textureLod(source_3d, vec3(uv_interp, layer), 0.0); +#elif defined(USE_TEXTURE2DARRAY) + vec4 color = textureLod(source_2d_array, vec3(uv_interp, layer), 0.0); #else vec4 color = textureLod(source, uv_interp, 0.0); #endif diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl index 86aac2801a..1a8ad5e1ef 100644 --- a/drivers/gles3/shaders/scene.glsl +++ b/drivers/gles3/shaders/scene.glsl @@ -165,10 +165,8 @@ uniform int spot_light_count; out vec4 diffuse_light_interp; out vec4 specular_light_interp; - void light_compute(vec3 N, vec3 L, vec3 V, vec3 light_color, float roughness, inout vec3 diffuse, inout vec3 specular) { - float NdotL = dot(N, L); float cNdotL = max(NdotL, 0.0); // clamped NdotL float NdotV = dot(N, V); @@ -225,8 +223,6 @@ void light_compute(vec3 N, vec3 L, vec3 V, vec3 light_color, float roughness, in specular += specular_brdf_NL * light_color * (1.0 / M_PI); } - - } void light_process_omni(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, float roughness, inout vec3 diffuse, inout vec3 specular) { diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp index 7284226ae7..e011176806 100644 --- a/drivers/unix/dir_access_unix.cpp +++ b/drivers/unix/dir_access_unix.cpp @@ -407,6 +407,10 @@ size_t DirAccessUnix::get_space_left() { #endif }; +String DirAccessUnix::get_filesystem_type() const { + return ""; //TODO this should be implemented +} + DirAccessUnix::DirAccessUnix() { dir_stream = 0; diff --git a/drivers/unix/dir_access_unix.h b/drivers/unix/dir_access_unix.h index 4da7e42b64..579cb0e798 100644 --- a/drivers/unix/dir_access_unix.h +++ b/drivers/unix/dir_access_unix.h @@ -82,6 +82,8 @@ public: virtual size_t get_space_left(); + virtual String get_filesystem_type() const; + DirAccessUnix(); ~DirAccessUnix(); }; diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index ce1c183242..e3e2e10e82 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -469,6 +469,11 @@ String OS_Unix::get_environment(const String &p_var) const { return ""; } +bool OS_Unix::set_environment(const String &p_var, const String &p_value) const { + + return setenv(p_var.utf8().get_data(), p_value.utf8().get_data(), /* overwrite: */ true) == 0; +} + int OS_Unix::get_processor_count() const { return sysconf(_SC_NPROCESSORS_CONF); diff --git a/drivers/unix/os_unix.h b/drivers/unix/os_unix.h index 2a23da6f28..09ab4aa1d8 100644 --- a/drivers/unix/os_unix.h +++ b/drivers/unix/os_unix.h @@ -95,6 +95,7 @@ public: virtual bool has_environment(const String &p_var) const; virtual String get_environment(const String &p_var) const; + virtual bool set_environment(const String &p_var, const String &p_value) const; virtual String get_locale() const; virtual int get_processor_count() const; diff --git a/drivers/unix/thread_posix.cpp b/drivers/unix/thread_posix.cpp index a81292d4a2..ef3f5fb49c 100644 --- a/drivers/unix/thread_posix.cpp +++ b/drivers/unix/thread_posix.cpp @@ -40,9 +40,13 @@ #include "core/os/memory.h" #include "core/safe_refcount.h" +static void _thread_id_key_destr_callback(void *p_value) { + memdelete(static_cast<Thread::ID *>(p_value)); +} + static pthread_key_t _create_thread_id_key() { pthread_key_t key; - pthread_key_create(&key, NULL); + pthread_key_create(&key, &_thread_id_key_destr_callback); return key; } @@ -63,7 +67,7 @@ void *ThreadPosix::thread_callback(void *userdata) { ThreadPosix *t = reinterpret_cast<ThreadPosix *>(userdata); t->id = atomic_increment(&next_thread_id); - pthread_setspecific(thread_id_key, (void *)t->id); + pthread_setspecific(thread_id_key, (void *)memnew(ID(t->id))); ScriptServer::thread_enter(); //scripts may need to attach a stack @@ -89,7 +93,14 @@ Thread *ThreadPosix::create_func_posix(ThreadCreateCallback p_callback, void *p_ } Thread::ID ThreadPosix::get_thread_id_func_posix() { - return (ID)pthread_getspecific(thread_id_key); + void *value = pthread_getspecific(thread_id_key); + + if (value) + return *static_cast<ID *>(value); + + ID new_id = atomic_increment(&next_thread_id); + pthread_setspecific(thread_id_key, (void *)memnew(ID(new_id))); + return new_id; } void ThreadPosix::wait_to_finish_func_posix(Thread *p_thread) { diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp index c20f707684..499bb4f34b 100644 --- a/drivers/windows/dir_access_windows.cpp +++ b/drivers/windows/dir_access_windows.cpp @@ -346,6 +346,35 @@ size_t DirAccessWindows::get_space_left() { return (size_t)bytes; } +String DirAccessWindows::get_filesystem_type() const { + String path = fix_path(const_cast<DirAccessWindows *>(this)->get_current_dir()); + print_line("fixed path: " + path); + int unit_end = path.find(":"); + ERR_FAIL_COND_V(unit_end == -1, String()); + String unit = path.substr(0, unit_end + 1) + "\\"; + print_line("unit: " + unit); + + WCHAR szVolumeName[100]; + WCHAR szFileSystemName[10]; + DWORD dwSerialNumber = 0; + DWORD dwMaxFileNameLength = 0; + DWORD dwFileSystemFlags = 0; + + if (::GetVolumeInformationW(unit.c_str(), + szVolumeName, + sizeof(szVolumeName), + &dwSerialNumber, + &dwMaxFileNameLength, + &dwFileSystemFlags, + szFileSystemName, + sizeof(szFileSystemName)) == TRUE) { + + return String(szFileSystemName); + } + + ERR_FAIL_V(""); +} + DirAccessWindows::DirAccessWindows() { p = memnew(DirAccessWindowsPrivate); diff --git a/drivers/windows/dir_access_windows.h b/drivers/windows/dir_access_windows.h index 2e2d23f4e2..10eee07f0c 100644 --- a/drivers/windows/dir_access_windows.h +++ b/drivers/windows/dir_access_windows.h @@ -82,6 +82,8 @@ public: //virtual FileType get_file_type() const; size_t get_space_left(); + virtual String get_filesystem_type() const; + DirAccessWindows(); ~DirAccessWindows(); }; diff --git a/drivers/windows/thread_windows.cpp b/drivers/windows/thread_windows.cpp index 1bcd5a10d4..8a2992e0c2 100644 --- a/drivers/windows/thread_windows.cpp +++ b/drivers/windows/thread_windows.cpp @@ -52,6 +52,7 @@ DWORD ThreadWindows::thread_callback(LPVOID userdata) { t->id = (ID)GetCurrentThreadId(); // must implement t->callback(t->user); + SetEvent(t->handle); ScriptServer::thread_exit(); @@ -63,13 +64,9 @@ Thread *ThreadWindows::create_func_windows(ThreadCreateCallback p_callback, void ThreadWindows *tr = memnew(ThreadWindows); tr->callback = p_callback; tr->user = p_user; - tr->handle = CreateThread( - NULL, // default security attributes - 0, // use default stack size - thread_callback, // thread function name - tr, // argument to thread function - 0, // use default creation flags - NULL); // returns the thread identifier + tr->handle = CreateEvent(NULL, TRUE, FALSE, NULL); + + QueueUserWorkItem(thread_callback, tr, WT_EXECUTELONGFUNCTION); return tr; } diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index 4ab9a72694..1e5a2897a7 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -31,6 +31,7 @@ #include "code_editor.h" #include "core/os/keyboard.h" +#include "core/string_builder.h" #include "editor/editor_scale.h" #include "editor_node.h" #include "editor_settings.h" @@ -98,9 +99,6 @@ void FindReplaceBar::_notification(int p_what) { } else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { set_process_unhandled_input(is_visible_in_tree()); - if (is_visible_in_tree()) { - _update_size(); - } } else if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) { find_prev->set_icon(get_icon("MoveUp", "EditorIcons")); @@ -389,7 +387,6 @@ void FindReplaceBar::_show_search() { search_text->set_cursor_position(search_text->get_text().length()); search_current(); } - call_deferred("_update_size"); } void FindReplaceBar::popup_search() { @@ -482,11 +479,6 @@ void FindReplaceBar::set_text_edit(TextEdit *p_text_edit) { text_edit->connect("text_changed", this, "_editor_text_changed"); } -void FindReplaceBar::_update_size() { - - container->set_size(Size2(hbc->get_size().width, 1)); -} - void FindReplaceBar::_bind_methods() { ClassDB::bind_method("_unhandled_input", &FindReplaceBar::_unhandled_input); @@ -502,7 +494,6 @@ 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")); @@ -510,26 +501,16 @@ void FindReplaceBar::_bind_methods() { FindReplaceBar::FindReplaceBar() { - container = memnew(MarginContainer); - container->add_constant_override("margin_bottom", 5 * EDSCALE); - add_child(container); - container->set_clip_contents(true); - container->set_h_size_flags(SIZE_EXPAND_FILL); - replace_all_mode = false; preserve_cursor = false; - 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); + add_child(vbc_lineedit); vbc_lineedit->set_h_size_flags(SIZE_EXPAND_FILL); VBoxContainer *vbc_button = memnew(VBoxContainer); - hbc->add_child(vbc_button); + add_child(vbc_button); VBoxContainer *vbc_option = memnew(VBoxContainer); - hbc->add_child(vbc_option); + add_child(vbc_option); HBoxContainer *hbc_button_search = memnew(HBoxContainer); vbc_button->add_child(hbc_button_search); @@ -673,18 +654,14 @@ void CodeTextEditor::_reset_zoom() { if (font.is_valid()) { EditorSettings::get_singleton()->set("interface/editor/code_font_size", 14); font->set_size(14); - font_size_nb->set_text("14 (100%)"); } } void CodeTextEditor::_line_col_changed() { - line_nb->set_text(itos(text_editor->cursor_get_line() + 1)); - String line = text_editor->get_line(text_editor->cursor_get_line()); int positional_column = 0; - for (int i = 0; i < text_editor->cursor_get_column(); i++) { if (line[i] == '\t') { positional_column += text_editor->get_indent_size(); //tab size @@ -693,7 +670,14 @@ void CodeTextEditor::_line_col_changed() { } } - col_nb->set_text(itos(positional_column + 1)); + StringBuilder *sb = memnew(StringBuilder); + sb->append("("); + sb->append(itos(text_editor->cursor_get_line() + 1).lpad(3)); + sb->append(","); + sb->append(itos(positional_column + 1).lpad(3)); + sb->append(")"); + + line_and_col_txt->set_text(sb->as_string()); } void CodeTextEditor::_text_changed() { @@ -747,8 +731,6 @@ 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); - font_size_nb->set_text(itos(new_size) + " (" + itos(100 * new_size / (14 * EDSCALE)) + "%)"); - if (new_size != font->get_size()) { EditorSettings::get_singleton()->set("interface/editor/code_font_size", new_size / EDSCALE); font->set_size(new_size); @@ -1167,7 +1149,6 @@ void CodeTextEditor::_on_settings_change() { _update_font(); font_size = EditorSettings::get_singleton()->get("interface/editor/code_font_size"); - font_size_nb->set_text(itos(font_size) + " (" + itos(100 * font_size / (14 * EDSCALE)) + "%)"); // AUTO BRACE COMPLETION text_editor->set_auto_brace_completion( @@ -1188,17 +1169,49 @@ void CodeTextEditor::_text_changed_idle_timeout() { emit_signal("validate_script"); } -void CodeTextEditor::_notification(int p_what) { +void CodeTextEditor::_warning_label_gui_input(const Ref<InputEvent> &p_event) { + Ref<InputEventMouseButton> mb = p_event; + if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { + _warning_button_pressed(); + } +} - if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) { - _load_theme_settings(); - emit_signal("load_theme_settings"); +void CodeTextEditor::_warning_button_pressed() { + emit_signal("warning_pressed"); +} + +void CodeTextEditor::_error_pressed(const Ref<InputEvent> &p_event) { + Ref<InputEventMouseButton> mb = p_event; + if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { + emit_signal("error_pressed"); } - if (p_what == NOTIFICATION_THEME_CHANGED) { - _update_font(); +} + +void CodeTextEditor::_notification(int p_what) { + + switch (p_what) { + case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { + _load_theme_settings(); + emit_signal("load_theme_settings"); + } break; + case NOTIFICATION_THEME_CHANGED: { + _update_font(); + } break; + case NOTIFICATION_ENTER_TREE: { + warning_button->set_icon(get_icon("NodeWarning", "EditorIcons")); + add_constant_override("separation", 4 * EDSCALE); + } break; + default: + break; } } +void CodeTextEditor::set_warning_nb(int p_warning_nb) { + warning_count_label->set_text(itos(p_warning_nb)); + warning_count_label->set_visible(p_warning_nb > 0); + warning_button->set_visible(p_warning_nb > 0); +} + void CodeTextEditor::_bind_methods() { ClassDB::bind_method("_text_editor_gui_input", &CodeTextEditor::_text_editor_gui_input); @@ -1209,9 +1222,14 @@ void CodeTextEditor::_bind_methods() { ClassDB::bind_method("_code_complete_timer_timeout", &CodeTextEditor::_code_complete_timer_timeout); ClassDB::bind_method("_complete_request", &CodeTextEditor::_complete_request); ClassDB::bind_method("_font_resize_timeout", &CodeTextEditor::_font_resize_timeout); + ClassDB::bind_method("_error_pressed", &CodeTextEditor::_error_pressed); + ClassDB::bind_method("_warning_button_pressed", &CodeTextEditor::_warning_button_pressed); + ClassDB::bind_method("_warning_label_gui_input", &CodeTextEditor::_warning_label_gui_input); ADD_SIGNAL(MethodInfo("validate_script")); ADD_SIGNAL(MethodInfo("load_theme_settings")); + ADD_SIGNAL(MethodInfo("warning_pressed")); + ADD_SIGNAL(MethodInfo("error_pressed")); } void CodeTextEditor::set_code_complete_func(CodeTextEditorCodeCompleteFunc p_code_complete_func, void *p_ud) { @@ -1226,15 +1244,16 @@ CodeTextEditor::CodeTextEditor() { ED_SHORTCUT("script_editor/zoom_out", TTR("Zoom Out"), KEY_MASK_CMD | KEY_MINUS); ED_SHORTCUT("script_editor/reset_zoom", TTR("Reset Zoom"), KEY_MASK_CMD | KEY_0); + text_editor = memnew(TextEdit); + add_child(text_editor); + text_editor->set_v_size_flags(SIZE_EXPAND_FILL); + + // Added second so it opens at the bottom, so it won't shift the entire text editor when opening. find_replace_bar = memnew(FindReplaceBar); add_child(find_replace_bar); find_replace_bar->set_h_size_flags(SIZE_EXPAND_FILL); find_replace_bar->hide(); - text_editor = memnew(TextEdit); - add_child(text_editor); - text_editor->set_v_size_flags(SIZE_EXPAND_FILL); - find_replace_bar->set_text_edit(text_editor); text_editor->set_show_line_numbers(true); @@ -1244,6 +1263,7 @@ CodeTextEditor::CodeTextEditor() { status_bar = memnew(HBoxContainer); add_child(status_bar); status_bar->set_h_size_flags(SIZE_EXPAND_FILL); + status_bar->set_custom_minimum_size(Size2(0, 24 * EDSCALE)); // Adjust for the height of the warning icon. idle = memnew(Timer); add_child(idle); @@ -1258,95 +1278,50 @@ CodeTextEditor::CodeTextEditor() { error_line = 0; error_column = 0; + // Error + ScrollContainer *scroll = memnew(ScrollContainer); + scroll->set_h_size_flags(SIZE_EXPAND_FILL); + scroll->set_v_size_flags(SIZE_EXPAND_FILL); + scroll->set_enable_v_scroll(false); + status_bar->add_child(scroll); + error = memnew(Label); - status_bar->add_child(error); - error->set_autowrap(true); - error->set_valign(Label::VALIGN_CENTER); - error->set_h_size_flags(SIZE_EXPAND_FILL); //required for it to display, given now it's clipping contents, do not touch + scroll->add_child(error); + error->set_v_size_flags(SIZE_EXPAND | SIZE_SHRINK_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_mouse_filter(MOUSE_FILTER_STOP); + error->connect("gui_input", this, "_error_pressed"); 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 - - warning_label = memnew(Label); - status_bar->add_child(warning_label); - warning_label->set_align(Label::ALIGN_RIGHT); - warning_label->set_valign(Label::VALIGN_CENTER); - warning_label->set_v_size_flags(SIZE_FILL); - warning_label->set_default_cursor_shape(CURSOR_POINTING_HAND); - warning_label->set_mouse_filter(MOUSE_FILTER_STOP); - warning_label->set_text(TTR("Warnings:")); - warning_label->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); + // Warnings + warning_button = memnew(ToolButton); + status_bar->add_child(warning_button); + warning_button->set_v_size_flags(SIZE_EXPAND | SIZE_SHRINK_CENTER); + warning_button->set_default_cursor_shape(CURSOR_POINTING_HAND); + warning_button->connect("pressed", this, "_warning_button_pressed"); + warning_button->set_tooltip(TTR("Warnings")); warning_count_label = memnew(Label); status_bar->add_child(warning_count_label); - warning_count_label->set_valign(Label::VALIGN_CENTER); - warning_count_label->set_v_size_flags(SIZE_FILL); - warning_count_label->set_autowrap(true); // workaround to prevent resizing the label on each change, do not touch - warning_count_label->set_clip_text(true); // workaround to prevent resizing the label on each change, do not touch - warning_count_label->set_custom_minimum_size(Size2(40, 1) * EDSCALE); + warning_count_label->set_v_size_flags(SIZE_EXPAND | SIZE_SHRINK_CENTER); warning_count_label->set_align(Label::ALIGN_RIGHT); warning_count_label->set_default_cursor_shape(CURSOR_POINTING_HAND); warning_count_label->set_mouse_filter(MOUSE_FILTER_STOP); + warning_count_label->set_tooltip(TTR("Warnings")); + warning_count_label->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("warning_color", "Editor")); warning_count_label->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); - warning_count_label->set_text("0"); - - Label *font_size_txt = memnew(Label); - status_bar->add_child(font_size_txt); - font_size_txt->set_align(Label::ALIGN_RIGHT); - font_size_txt->set_valign(Label::VALIGN_CENTER); - font_size_txt->set_v_size_flags(SIZE_FILL); - font_size_txt->set_text(TTR("Font Size:")); - font_size_txt->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); - - font_size_nb = memnew(Label); - status_bar->add_child(font_size_nb); - font_size_nb->set_valign(Label::VALIGN_CENTER); - font_size_nb->set_v_size_flags(SIZE_FILL); - font_size_nb->set_autowrap(true); // workaround to prevent resizing the label on each change, do not touch - font_size_nb->set_clip_text(true); // workaround to prevent resizing the label on each change, do not touch - font_size_nb->set_custom_minimum_size(Size2(100, 1) * EDSCALE); - font_size_nb->set_align(Label::ALIGN_RIGHT); - font_size_nb->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); - - Label *line_txt = memnew(Label); - status_bar->add_child(line_txt); - line_txt->set_align(Label::ALIGN_RIGHT); - line_txt->set_valign(Label::VALIGN_CENTER); - line_txt->set_v_size_flags(SIZE_FILL); - line_txt->set_text(TTR("Line:")); - line_txt->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); - - line_nb = memnew(Label); - status_bar->add_child(line_nb); - line_nb->set_valign(Label::VALIGN_CENTER); - line_nb->set_v_size_flags(SIZE_FILL); - line_nb->set_autowrap(true); // workaround to prevent resizing the label on each change, do not touch - line_nb->set_clip_text(true); // workaround to prevent resizing the label on each change, do not touch - line_nb->set_custom_minimum_size(Size2(40, 1) * EDSCALE); - line_nb->set_align(Label::ALIGN_RIGHT); - line_nb->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); - - Label *col_txt = memnew(Label); - status_bar->add_child(col_txt); - col_txt->set_align(Label::ALIGN_RIGHT); - col_txt->set_valign(Label::VALIGN_CENTER); - col_txt->set_v_size_flags(SIZE_FILL); - col_txt->set_text(TTR("Col:")); - col_txt->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); - - col_nb = memnew(Label); - status_bar->add_child(col_nb); - col_nb->set_valign(Label::VALIGN_CENTER); - col_nb->set_v_size_flags(SIZE_FILL); - col_nb->set_autowrap(true); // workaround to prevent resizing the label on each change, do not touch - col_nb->set_clip_text(true); // workaround to prevent resizing the label on each change, do not touch - col_nb->set_custom_minimum_size(Size2(40, 1) * EDSCALE); - col_nb->set_align(Label::ALIGN_RIGHT); - col_nb->set("custom_constants/margin_right", 0); - col_nb->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); + warning_count_label->connect("gui_input", this, "_warning_label_gui_input"); + + set_warning_nb(0); + + // Line and column + line_and_col_txt = memnew(Label); + status_bar->add_child(line_and_col_txt); + line_and_col_txt->set_v_size_flags(SIZE_EXPAND | SIZE_SHRINK_CENTER); + line_and_col_txt->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts")); + line_and_col_txt->set_tooltip(TTR("Line and column numbers.")); + line_and_col_txt->set_mouse_filter(MOUSE_FILTER_STOP); text_editor->connect("gui_input", this, "_text_editor_gui_input"); text_editor->connect("cursor_changed", this, "_line_col_changed"); @@ -1365,7 +1340,6 @@ CodeTextEditor::CodeTextEditor() { font_resize_val = 0; font_size = EditorSettings::get_singleton()->get("interface/editor/code_font_size"); - font_size_nb->set_text(itos(font_size) + " (" + itos(100 * font_size / (14 * EDSCALE)) + "%)"); font_resize_timer = memnew(Timer); add_child(font_resize_timer); font_resize_timer->set_one_shot(true); diff --git a/editor/code_editor.h b/editor/code_editor.h index 96fc5b79e5..e801b5a17c 100644 --- a/editor/code_editor.h +++ b/editor/code_editor.h @@ -63,7 +63,6 @@ class FindReplaceBar : public HBoxContainer { GDCLASS(FindReplaceBar, HBoxContainer); - MarginContainer *container; LineEdit *search_text; ToolButton *find_prev; ToolButton *find_next; @@ -76,7 +75,6 @@ class FindReplaceBar : public HBoxContainer { Button *replace_all; CheckBox *selection_only; - HBoxContainer *hbc; VBoxContainer *vbc_lineedit; HBoxContainer *hbc_button_replace; HBoxContainer *hbc_option_replace; @@ -142,12 +140,12 @@ class CodeTextEditor : public VBoxContainer { TextEdit *text_editor; FindReplaceBar *find_replace_bar; HBoxContainer *status_bar; - Label *warning_label; + + ToolButton *warning_button; Label *warning_count_label; - Label *line_nb; - Label *col_nb; - Label *font_size_nb; + Label *line_and_col_txt; + Label *info; Timer *idle; Timer *code_complete_timer; @@ -176,6 +174,10 @@ class CodeTextEditor : public VBoxContainer { CodeTextEditorCodeCompleteFunc code_complete_func; void *code_complete_ud; + void _warning_label_gui_input(const Ref<InputEvent> &p_event); + void _warning_button_pressed(); + void _error_pressed(const Ref<InputEvent> &p_event); + protected: virtual void _load_theme_settings() {} virtual void _validate_script() {} @@ -212,15 +214,14 @@ public: Variant get_edit_state(); void set_edit_state(const Variant &p_state); + void set_warning_nb(int p_warning_nb); + void update_editor_settings(); void set_error(const String &p_error); void set_error_pos(int p_line, int p_column); void update_line_and_column() { _line_col_changed(); } TextEdit *get_text_edit() { return text_editor; } FindReplaceBar *get_find_replace_bar() { return find_replace_bar; } - Label *get_error_label() const { return error; } - Label *get_warning_label() const { return warning_label; } - Label *get_warning_count_label() const { return warning_count_label; } virtual void apply_code() {} void goto_error(); diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp index 205bdc63b9..3c2bfdc04d 100644 --- a/editor/create_dialog.cpp +++ b/editor/create_dialog.cpp @@ -208,7 +208,7 @@ void CreateDialog::add_type(const String &p_type, HashMap<String, TreeItem *> &p if (!can_instance) { item->set_custom_color(0, get_color("disabled_font_color", "Editor")); item->set_selectable(0, false); - } else { + } else if (!(*to_select && (*to_select)->get_text(0) == search_box->get_text())) { bool is_search_subsequence = search_box->get_text().is_subsequence_ofi(p_type); String to_select_type = *to_select ? (*to_select)->get_text(0) : ""; to_select_type = to_select_type.split(" ")[0]; @@ -221,11 +221,11 @@ void CreateDialog::add_type(const String &p_type, HashMap<String, TreeItem *> &p } else { current_item_is_preferred = ed.script_class_is_parent(p_type, preferred_search_result_type) && !ed.script_class_is_parent(to_select_type, preferred_search_result_type) && search_box->get_text() != to_select_type; } - if (*to_select && p_type.length() < (*to_select)->get_text(0).length()) { + if (search_box->get_text() == p_type || (*to_select && p_type.length() < (*to_select)->get_text(0).length())) { current_item_is_preferred = true; } - if (((!*to_select || current_item_is_preferred) && is_search_subsequence) || search_box->get_text() == p_type) { + if (((!*to_select || current_item_is_preferred) && is_search_subsequence)) { *to_select = item; } } diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index f9f1e455f5..f5a60f2553 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -475,7 +475,6 @@ void DependencyRemoveDialog::show(const Vector<String> &p_folders, const Vector< Vector<RemovedDependency> removed_deps; _find_all_removed_dependencies(EditorFileSystem::get_singleton()->get_filesystem(), removed_deps); removed_deps.sort(); - if (removed_deps.empty()) { owners->hide(); text->set_text(TTR("Remove selected files from the project? (no undo)")); @@ -486,6 +485,7 @@ void DependencyRemoveDialog::show(const Vector<String> &p_folders, const Vector< text->set_text(TTR("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)")); popup_centered_minsize(Size2(500, 350)); } + EditorFileSystem::get_singleton()->scan_changes(); } void DependencyRemoveDialog::ok_pressed() { diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index 5d0abef4b8..6593eb8f03 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -75,9 +75,16 @@ void EditorAudioBus::_notification(int p_what) { disabled_vu = get_icon("BusVuFrozen", "EditorIcons"); + Color solo_color = Color::html(EditorSettings::get_singleton()->is_dark_theme() ? "#ffe337" : "#ffeb70"); + Color mute_color = Color::html(EditorSettings::get_singleton()->is_dark_theme() ? "#ff2929" : "#ff7070"); + Color bypass_color = Color::html(EditorSettings::get_singleton()->is_dark_theme() ? "#22ccff" : "#70deff"); + solo->set_icon(get_icon("AudioBusSolo", "EditorIcons")); + solo->add_color_override("icon_color_pressed", solo_color); mute->set_icon(get_icon("AudioBusMute", "EditorIcons")); + mute->add_color_override("icon_color_pressed", mute_color); bypass->set_icon(get_icon("AudioBusBypass", "EditorIcons")); + bypass->add_color_override("icon_color_pressed", bypass_color); bus_options->set_icon(get_icon("GuiMiniTabMenu", "EditorIcons")); diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp index b36ed72125..7c99318dca 100644 --- a/editor/editor_export.cpp +++ b/editor/editor_export.cpp @@ -378,7 +378,7 @@ String EditorExportPlatform::find_export_template(String template_file_name, Str // Not found if (err) { - *err += "No export template found at \"" + template_path + "\"."; + *err += TTR("No export template found at the expected path:") + "\n" + template_path + "\n"; } return String(); } @@ -1404,12 +1404,12 @@ bool EditorExportPlatformPC::can_export(const Ref<EditorExportPreset> &p_preset, if (!FileAccess::exists(custom_debug_binary)) { dvalid = false; - err = "Custom debug binary not found.\n"; + err += TTR("Custom debug template not found.") + "\n"; } if (!FileAccess::exists(custom_release_binary)) { rvalid = false; - err += "Custom release binary not found.\n"; + err += TTR("Custom release template not found.") + "\n"; } if (dvalid || rvalid) diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp index 5d8903a554..fe8d57d1a1 100644 --- a/editor/editor_file_system.cpp +++ b/editor/editor_file_system.cpp @@ -797,7 +797,7 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const bool updated_dir = false; String cd = p_dir->get_path(); - if (current_mtime != p_dir->modified_time) { + if (current_mtime != p_dir->modified_time || using_fat_32) { updated_dir = true; p_dir->modified_time = current_mtime; @@ -1809,6 +1809,8 @@ EditorFileSystem::EditorFileSystem() { if (da->change_dir("res://.import") != OK) { da->make_dir("res://.import"); } + //this should probably also work on Unix and use the string it returns for FAT32 + using_fat_32 = da->get_filesystem_type() == "FAT32"; memdelete(da); scan_total = 0; diff --git a/editor/editor_file_system.h b/editor/editor_file_system.h index c18957ae99..bb892baf57 100644 --- a/editor/editor_file_system.h +++ b/editor/editor_file_system.h @@ -231,6 +231,8 @@ class EditorFileSystem : public Node { static Error _resource_import(const String &p_path); + bool using_fat_32; //workaround for projects in FAT32 filesystem (pendrives, most of the time) + protected: void _notification(int p_what); static void _bind_methods(); diff --git a/editor/editor_folding.cpp b/editor/editor_folding.cpp index 6ab41c641d..6b13d19d33 100644 --- a/editor/editor_folding.cpp +++ b/editor/editor_folding.cpp @@ -173,7 +173,7 @@ void EditorFolding::load_scene_folding(Node *p_scene, const String &p_path) { for (int i = 0; i < unfolds.size(); i += 2) { NodePath path = unfolds[i]; PoolVector<String> un = unfolds[i + 1]; - Node *node = p_scene->get_node(path); + Node *node = p_scene->get_node_or_null(path); if (!node) { continue; } diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index f8cee6883b..564148ae4e 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -1423,10 +1423,6 @@ EditorHelp::EditorHelp() { EDITOR_DEF("text_editor/help/sort_functions_alphabetically", true); - find_bar = memnew(FindBar); - add_child(find_bar); - find_bar->hide(); - class_desc = memnew(RichTextLabel); add_child(class_desc); class_desc->set_v_size_flags(SIZE_EXPAND_FILL); @@ -1434,13 +1430,16 @@ EditorHelp::EditorHelp() { class_desc->connect("meta_clicked", this, "_class_desc_select"); class_desc->connect("gui_input", this, "_class_desc_input"); + // Added second so it opens at the bottom so it won't offset the entire widget. + find_bar = memnew(FindBar); + add_child(find_bar); + find_bar->hide(); find_bar->set_rich_text_label(class_desc); class_desc->set_selection_enabled(true); scroll_locked = false; select_locked = false; - //set_process_unhandled_key_input(true); class_desc->hide(); } @@ -1509,47 +1508,32 @@ EditorHelpBit::EditorHelpBit() { rich_text = memnew(RichTextLabel); add_child(rich_text); - //rich_text->set_anchors_and_margins_preset(Control::PRESET_WIDE); rich_text->connect("meta_clicked", this, "_meta_clicked"); rich_text->add_color_override("selection_color", EditorSettings::get_singleton()->get("text_editor/theme/selection_color")); rich_text->set_override_selected_font_color(false); - set_custom_minimum_size(Size2(0, 70 * EDSCALE)); } FindBar::FindBar() { - container = memnew(Control); - add_child(container); - - container->set_clip_contents(true); - container->set_h_size_flags(SIZE_EXPAND_FILL); - - hbc = memnew(HBoxContainer); - container->add_child(hbc); - - vbc_search_text = memnew(VBoxContainer); - hbc->add_child(vbc_search_text); - vbc_search_text->set_h_size_flags(SIZE_EXPAND_FILL); - hbc->set_anchor_and_margin(MARGIN_RIGHT, 1, 0); - search_text = memnew(LineEdit); - vbc_search_text->add_child(search_text); + add_child(search_text); search_text->set_custom_minimum_size(Size2(100 * EDSCALE, 0)); + search_text->set_h_size_flags(SIZE_EXPAND_FILL); search_text->connect("text_changed", this, "_search_text_changed"); search_text->connect("text_entered", this, "_search_text_entered"); find_prev = memnew(ToolButton); - hbc->add_child(find_prev); + add_child(find_prev); find_prev->set_focus_mode(FOCUS_NONE); find_prev->connect("pressed", this, "_search_prev"); find_next = memnew(ToolButton); - hbc->add_child(find_next); + add_child(find_next); find_next->set_focus_mode(FOCUS_NONE); find_next->connect("pressed", this, "_search_next"); error_label = memnew(Label); - hbc->add_child(error_label); + add_child(error_label); error_label->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor")); hide_button = memnew(TextureButton); @@ -1576,13 +1560,6 @@ void FindBar::popup_search() { _search(); } } - - call_deferred("_update_size"); -} - -void FindBar::_update_size() { - - container->set_custom_minimum_size(Size2(0, hbc->get_size().height)); } void FindBar::_notification(int p_what) { @@ -1618,7 +1595,6 @@ void FindBar::_bind_methods() { ClassDB::bind_method("_search_next", &FindBar::search_next); ClassDB::bind_method("_search_prev", &FindBar::search_prev); ClassDB::bind_method("_hide_pressed", &FindBar::_hide_bar); - ClassDB::bind_method("_update_size", &FindBar::_update_size); ADD_SIGNAL(MethodInfo("search")); } @@ -1677,7 +1653,7 @@ void FindBar::_unhandled_input(const Ref<InputEvent> &p_event) { Ref<InputEventKey> k = p_event; if (k.is_valid()) { - if (k->is_pressed() && (rich_text_label->has_focus() || hbc->is_a_parent_of(get_focus_owner()))) { + if (k->is_pressed() && (rich_text_label->has_focus() || is_a_parent_of(get_focus_owner()))) { bool accepted = true; diff --git a/editor/editor_help.h b/editor/editor_help.h index 133d98f81f..3b17580a63 100644 --- a/editor/editor_help.h +++ b/editor/editor_help.h @@ -34,6 +34,7 @@ #include "editor/code_editor.h" #include "editor/doc/doc_data.h" #include "editor/editor_plugin.h" +#include "scene/gui/margin_container.h" #include "scene/gui/menu_button.h" #include "scene/gui/panel_container.h" #include "scene/gui/rich_text_label.h" @@ -52,10 +53,6 @@ class FindBar : public HBoxContainer { TextureButton *hide_button; String prev_search; - Control *container; - HBoxContainer *hbc; - VBoxContainer *vbc_search_text; - RichTextLabel *rich_text_label; void _show_search(); @@ -191,9 +188,9 @@ public: ~EditorHelp(); }; -class EditorHelpBit : public PanelContainer { +class EditorHelpBit : public MarginContainer { - GDCLASS(EditorHelpBit, PanelContainer); + GDCLASS(EditorHelpBit, MarginContainer); RichTextLabel *rich_text; void _go_to_help(String p_what); diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index 0e5fd3a999..1078fabc2e 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -1366,7 +1366,28 @@ void EditorInspector::update_tree() { //to update properly if all is refreshed StringName current_selected = property_selected; - int current_focusable = property_focusable; + int current_focusable = -1; + + if (property_focusable != -1) { + //check focusable is really focusable + bool restore_focus = false; + Control *focused = get_focus_owner(); + if (focused) { + Node *parent = focused->get_parent(); + while (parent) { + EditorInspector *inspector = Object::cast_to<EditorInspector>(parent); + if (inspector) { + restore_focus = inspector == this; //may be owned by another inspector + break; //exit after the first inspector is found, since there may be nested ones + } + parent = parent->get_parent(); + } + } + + if (restore_focus) { + current_focusable = property_focusable; + } + } _clear(); @@ -1878,13 +1899,13 @@ int EditorInspector::get_scroll_offset() const { return get_v_scroll(); } -void EditorInspector::set_use_sub_inspector_bg(bool p_enable) { +void EditorInspector::set_sub_inspector(bool p_enable) { - use_sub_inspector_bg = p_enable; + sub_inspector = p_enable; if (!is_inside_tree()) return; - if (use_sub_inspector_bg) { + if (sub_inspector) { add_style_override("bg", get_stylebox("sub_inspector_bg", "Editor")); } else { add_style_override("bg", get_stylebox("bg", "Tree")); @@ -1989,7 +2010,7 @@ void EditorInspector::_property_changed(const String &p_path, const Variant &p_v } } -void EditorInspector::_property_changed_update_all(const String &p_path, const Variant &p_value) { +void EditorInspector::_property_changed_update_all(const String &p_path, const Variant &p_value, const String &p_name, bool p_changing) { update_tree(); } @@ -2105,16 +2126,18 @@ void EditorInspector::_notification(int p_what) { if (p_what == NOTIFICATION_ENTER_TREE) { - get_tree()->connect("node_removed", this, "_node_removed"); - if (use_sub_inspector_bg) { + if (sub_inspector) { add_style_override("bg", get_stylebox("sub_inspector_bg", "Editor")); - } else if (is_inside_tree()) { + } else { add_style_override("bg", get_stylebox("bg", "Tree")); + get_tree()->connect("node_removed", this, "_node_removed"); } } if (p_what == NOTIFICATION_EXIT_TREE) { - get_tree()->disconnect("node_removed", this, "_node_removed"); + if (!sub_inspector) { + get_tree()->disconnect("node_removed", this, "_node_removed"); + } edit(NULL); } @@ -2163,7 +2186,7 @@ void EditorInspector::_notification(int p_what) { if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) { - if (use_sub_inspector_bg) { + if (sub_inspector) { add_style_override("bg", get_stylebox("sub_inspector_bg", "Editor")); } else if (is_inside_tree()) { add_style_override("bg", get_stylebox("bg", "Tree")); @@ -2259,7 +2282,7 @@ EditorInspector::EditorInspector() { _prop_edited = "property_edited"; set_process(true); property_focusable = -1; - use_sub_inspector_bg = false; + sub_inspector = false; get_v_scrollbar()->connect("value_changed", this, "_vscroll_changed"); update_scroll_request = -1; diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h index d64a78be57..3d22cdb9a3 100644 --- a/editor/editor_inspector.h +++ b/editor/editor_inspector.h @@ -281,7 +281,7 @@ class EditorInspector : public ScrollContainer { bool update_all_pending; bool read_only; bool keying; - bool use_sub_inspector_bg; + bool sub_inspector; float refresh_countdown; bool update_tree_pending; @@ -302,7 +302,7 @@ class EditorInspector : public ScrollContainer { void _edit_set(const String &p_name, const Variant &p_value, bool p_refresh_all, const String &p_changed_field); void _property_changed(const String &p_path, const Variant &p_value, const String &p_name = "", bool changing = false); - void _property_changed_update_all(const String &p_path, const Variant &p_value); + void _property_changed_update_all(const String &p_path, const Variant &p_value, const String &p_name = "", bool p_changing = false); void _multiple_properties_changed(Vector<String> p_paths, Array p_values); void _property_keyed(const String &p_path, bool p_advance); void _property_keyed_with_value(const String &p_path, const Variant &p_value, bool p_advance); @@ -375,7 +375,7 @@ public: void set_object_class(const String &p_class); String get_object_class() const; - void set_use_sub_inspector_bg(bool p_enable); + void set_sub_inspector(bool p_enable); EditorInspector(); }; diff --git a/editor/editor_log.cpp b/editor/editor_log.cpp index 803d7e10f7..aaca47622d 100644 --- a/editor/editor_log.cpp +++ b/editor/editor_log.cpp @@ -65,7 +65,6 @@ void EditorLog::_notification(int p_what) { } else if (p_what == NOTIFICATION_THEME_CHANGED) { 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); if (log != NULL) { log->add_font_override("normal_font", get_font("output_source", "EditorFonts")); } @@ -132,7 +131,6 @@ void EditorLog::_bind_methods() { EditorLog::EditorLog() { VBoxContainer *vb = this; - add_constant_override("separation", get_constant("separation", "VBoxContainer")); HBoxContainer *hb = memnew(HBoxContainer); vb->add_child(hb); @@ -163,6 +161,8 @@ EditorLog::EditorLog() { current = Thread::get_caller_id(); + add_constant_override("separation", get_constant("separation", "VBoxContainer")); + EditorNode::get_undo_redo()->set_commit_notify_callback(_undo_redo_cbk, this); } diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 719130621e..d7e8869428 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -326,7 +326,6 @@ void EditorNode::_notification(int p_what) { gui_base->set_theme(theme); gui_base->add_style_override("panel", gui_base->get_stylebox("Background", "EditorStyles")); - play_button_panel->add_style_override("panel", gui_base->get_stylebox("PlayButtonPanel", "EditorStyles")); scene_root_parent->add_style_override("panel", gui_base->get_stylebox("Content", "EditorStyles")); bottom_panel->add_style_override("panel", gui_base->get_stylebox("panel", "TabContainer")); scene_tabs->add_style_override("tab_fg", gui_base->get_stylebox("SceneTabFG", "EditorStyles")); @@ -952,6 +951,9 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) { } if (img.is_valid()) { + + img = img->duplicate(); + save.step(TTR("Creating Thumbnail"), 2); save.step(TTR("Creating Thumbnail"), 3); @@ -1108,12 +1110,15 @@ void EditorNode::_save_scene(String p_file, int idx) { } } -void EditorNode::save_all_scenes_and_restart() { +void EditorNode::save_all_scenes() { _menu_option_confirm(RUN_STOP, true); - exiting = true; - _save_all_scenes(); +} + +void EditorNode::restart_editor() { + + exiting = true; String to_reopen; if (get_tree()->get_edited_scene_root()) { @@ -2305,7 +2310,8 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { ProjectSettings::get_singleton()->set("rendering/quality/driver/driver_name", video_driver_request); ProjectSettings::get_singleton()->save(); - save_all_scenes_and_restart(); + save_all_scenes(); + restart_editor(); } break; default: { if (p_option >= IMPORT_PLUGIN_BASE) { @@ -2965,6 +2971,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b prev_scene->set_disabled(previous_scenes.size() == 0); opening_prev = false; + scene_tree_dock->set_selected(new_scene); ScriptEditor::get_singleton()->get_debugger()->update_live_edit_root(); @@ -4760,6 +4767,8 @@ EditorNode::EditorNode() { ResourceLoader::clear_translation_remaps(); //no remaps using during editor ResourceLoader::clear_path_remaps(); + ImageTexture::set_keep_images_cached(true); + InputDefault *id = Object::cast_to<InputDefault>(Input::get_singleton()); if (id) { @@ -5193,11 +5202,8 @@ EditorNode::EditorNode() { viewport->add_constant_override("separation", 0); scene_root_parent->add_child(viewport); - PanelContainer *top_region = memnew(PanelContainer); - top_region->add_style_override("panel", gui_base->get_stylebox("MenuPanel", "EditorStyles")); HBoxContainer *left_menu_hb = memnew(HBoxContainer); - top_region->add_child(left_menu_hb); - menu_hb->add_child(top_region); + menu_hb->add_child(left_menu_hb); file_menu = memnew(MenuButton); file_menu->set_flat(false); @@ -5327,11 +5333,10 @@ EditorNode::EditorNode() { p->add_item(TTR("Quit to Project List"), RUN_PROJECT_MANAGER, KEY_MASK_SHIFT + KEY_MASK_CMD + KEY_Q); #endif - PanelContainer *editor_region = memnew(PanelContainer); - main_editor_button_vb = memnew(HBoxContainer); - editor_region->add_child(main_editor_button_vb); menu_hb->add_spacer(); - menu_hb->add_child(editor_region); + + main_editor_button_vb = memnew(HBoxContainer); + menu_hb->add_child(main_editor_button_vb); debug_menu = memnew(MenuButton); debug_menu->set_flat(false); @@ -5420,11 +5425,8 @@ EditorNode::EditorNode() { p->add_separator(); p->add_icon_item(gui_base->get_icon("Godot", "EditorIcons"), TTR("About"), HELP_ABOUT); - play_button_panel = memnew(PanelContainer); - menu_hb->add_child(play_button_panel); - HBoxContainer *play_hb = memnew(HBoxContainer); - play_button_panel->add_child(play_hb); + menu_hb->add_child(play_hb); play_button = memnew(ToolButton); play_hb->add_child(play_button); @@ -5502,7 +5504,6 @@ EditorNode::EditorNode() { video_driver = memnew(OptionButton); video_driver->set_flat(true); video_driver->set_focus_mode(Control::FOCUS_NONE); - video_driver->set_v_size_flags(Control::SIZE_SHRINK_CENTER); video_driver->connect("item_selected", this, "_video_driver_selected"); video_driver->add_font_override("font", gui_base->get_font("bold", "EditorFonts")); right_menu_hb->add_child(video_driver); @@ -5538,7 +5539,7 @@ EditorNode::EditorNode() { layout_dialog->connect("name_confirmed", this, "_dialog_action"); update_menu = memnew(MenuButton); - update_menu->set_tooltip(TTR("Spins when the editor window repaints!")); + update_menu->set_tooltip(TTR("Spins when the editor window redraws.")); right_menu_hb->add_child(update_menu); update_menu->set_icon(gui_base->get_icon("Progress1", "EditorIcons")); update_menu->get_popup()->connect("id_pressed", this, "_menu_option"); @@ -5629,7 +5630,7 @@ EditorNode::EditorNode() { bottom_panel->add_child(bottom_panel_vb); bottom_panel_hb = memnew(HBoxContainer); - bottom_panel_hb->set_custom_minimum_size(Size2(0, 24)); // Adjust for the height of the "Expand Bottom Dock" icon. + bottom_panel_hb->set_custom_minimum_size(Size2(0, 24 * EDSCALE)); // Adjust for the height of the "Expand Bottom Dock" icon. bottom_panel_vb->add_child(bottom_panel_hb); bottom_panel_hb_editors = memnew(HBoxContainer); diff --git a/editor/editor_node.h b/editor/editor_node.h index 13bebea5f0..077704ca05 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -200,7 +200,6 @@ private: Control *theme_base; Control *gui_base; VBoxContainer *main_vbox; - PanelContainer *play_button_panel; OptionButton *video_driver; ConfirmationDialog *video_restart_dialog; @@ -782,7 +781,8 @@ public: void add_tool_submenu_item(const String &p_name, PopupMenu *p_submenu); void remove_tool_menu_item(const String &p_name); - void save_all_scenes_and_restart(); + void save_all_scenes(); + void restart_editor(); void dim_editor(bool p_dimming); diff --git a/editor/editor_profiler.cpp b/editor/editor_profiler.cpp index e0baca9299..dee589ad3f 100644 --- a/editor/editor_profiler.cpp +++ b/editor/editor_profiler.cpp @@ -392,7 +392,7 @@ void EditorProfiler::_update_frame() { category->set_custom_color(0, _get_color_from_signature(m.categories[i].signature)); } - for (int j = 0; j < m.categories[i].items.size(); j++) { + for (int j = m.categories[i].items.size() - 1; j >= 0; j--) { const Metric::Category::Item &it = m.categories[i].items[j]; TreeItem *item = variables->create_item(category); diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index c5d0f13c60..56bab440c9 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -2187,7 +2187,19 @@ void EditorPropertyResource::_menu_option(int p_which) { return; } - Object *obj = ClassDB::instance(intype); + Object *obj = NULL; + + if (ScriptServer::is_global_class(intype)) { + obj = ClassDB::instance(ScriptServer::get_global_class_base(intype)); + if (obj) { + Ref<Script> script = ResourceLoader::load(ScriptServer::get_global_class_path(intype)); + if (script.is_valid()) { + obj->set_script(Variant(script)); + } + } + } else { + obj = ClassDB::instance(intype); + } if (!obj) { obj = EditorNode::get_editor_data().instance_custom_type(intype, "Resource"); @@ -2448,7 +2460,7 @@ void EditorPropertyResource::update_property() { sub_inspector->set_enable_v_scroll(false); sub_inspector->set_use_doc_hints(true); - sub_inspector->set_use_sub_inspector_bg(true); + sub_inspector->set_sub_inspector(true); sub_inspector->set_enable_capitalize_paths(true); sub_inspector->connect("property_keyed", this, "_sub_inspector_property_keyed"); diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp index 368efbc48f..f77f31db80 100644 --- a/editor/editor_resource_preview.cpp +++ b/editor/editor_resource_preview.cpp @@ -159,6 +159,7 @@ void EditorResourcePreview::_generate_preview(Ref<ImageTexture> &r_texture, Ref< small_thumbnail_size *= EDSCALE; Ref<Image> small_image = r_texture->get_data(); + small_image = small_image->duplicate(); small_image->resize(small_thumbnail_size, small_thumbnail_size, Image::INTERPOLATE_CUBIC); r_small_texture.instance(); r_small_texture->create_from_image(small_image); diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp index a2883690da..acc7637c0b 100644 --- a/editor/editor_sectioned_inspector.cpp +++ b/editor/editor_sectioned_inspector.cpp @@ -241,7 +241,7 @@ void SectionedInspector::update_category_list() { int sp = pi.name.find("/"); if (sp == -1) - pi.name = "Global/" + pi.name; + pi.name = "global/" + pi.name; Vector<String> sectionarr = pi.name.split("/"); String metasection; diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 9973c7354e..cbd8df315a 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -575,6 +575,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { _initial_set("run/auto_save/save_before_running", true); // Output + hints["run/output/font_size"] = PropertyInfo(Variant::INT, "run/output/font_size", PROPERTY_HINT_RANGE, "8,96,1", PROPERTY_USAGE_DEFAULT); _initial_set("run/output/always_clear_output_on_play", true); _initial_set("run/output/always_open_output_on_play", true); _initial_set("run/output/always_close_output_on_stop", false); diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp index cd5df14f1b..dbf63102cf 100644 --- a/editor/import/editor_import_collada.cpp +++ b/editor/import/editor_import_collada.cpp @@ -44,8 +44,6 @@ #include "scene/resources/packed_scene.h" #include "scene/resources/surface_tool.h" -#include <iostream> - struct ColladaImport { Collada collada; diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp index 654dfc62e0..c29e9281fa 100644 --- a/editor/import/editor_scene_importer_gltf.cpp +++ b/editor/import/editor_scene_importer_gltf.cpp @@ -1030,11 +1030,19 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) { int size = src_varr.size(); ERR_FAIL_COND_V(size == 0, ERR_PARSE_ERROR); { + + int max_idx = varr.size(); + varr.resize(size); + PoolVector<Vector3>::Write w_varr = varr.write(); PoolVector<Vector3>::Read r_varr = varr.read(); PoolVector<Vector3>::Read r_src_varr = src_varr.read(); for (int l = 0; l < size; l++) { - w_varr[l] = r_varr[l] + r_src_varr[l]; + if (l < max_idx) { + w_varr[l] = r_varr[l] + r_src_varr[l]; + } else { + w_varr[l] = r_src_varr[l]; + } } } array_copy[Mesh::ARRAY_VERTEX] = varr; @@ -1045,11 +1053,18 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) { int size = src_narr.size(); ERR_FAIL_COND_V(size == 0, ERR_PARSE_ERROR); { + int max_idx = narr.size(); + narr.resize(size); + PoolVector<Vector3>::Write w_narr = narr.write(); PoolVector<Vector3>::Read r_narr = narr.read(); PoolVector<Vector3>::Read r_src_narr = src_narr.read(); for (int l = 0; l < size; l++) { - w_narr[l] = r_narr[l] + r_src_narr[l]; + if (l < max_idx) { + w_narr[l] = r_narr[l] + r_src_narr[l]; + } else { + w_narr[l] = r_src_narr[l]; + } } } array_copy[Mesh::ARRAY_NORMAL] = narr; @@ -1062,6 +1077,8 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) { { + int max_idx = tangents_v3.size(); + int size4 = src_tangents.size(); tangents_v4.resize(size4); PoolVector<float>::Write w4 = tangents_v4.write(); @@ -1071,9 +1088,15 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) { for (int l = 0; l < size4 / 4; l++) { - w4[l * 4 + 0] = r3[l].x + r4[l * 4 + 0]; - w4[l * 4 + 1] = r3[l].y + r4[l * 4 + 1]; - w4[l * 4 + 2] = r3[l].z + r4[l * 4 + 2]; + if (l < max_idx) { + w4[l * 4 + 0] = r3[l].x + r4[l * 4 + 0]; + w4[l * 4 + 1] = r3[l].y + r4[l * 4 + 1]; + w4[l * 4 + 2] = r3[l].z + r4[l * 4 + 2]; + } else { + w4[l * 4 + 0] = r4[l * 4 + 0]; + w4[l * 4 + 1] = r4[l * 4 + 1]; + w4[l * 4 + 2] = r4[l * 4 + 2]; + } w4[l * 4 + 3] = r4[l * 4 + 3]; //copy flip value } } diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp index e59df7c932..40cf02ac9d 100644 --- a/editor/import_dock.cpp +++ b/editor/import_dock.cpp @@ -372,6 +372,63 @@ void ImportDock::clear() { preset->get_popup()->clear(); } +static bool _find_owners(EditorFileSystemDirectory *efsd, const String &p_path) { + + if (!efsd) + return false; + + for (int i = 0; i < efsd->get_subdir_count(); i++) { + + if (_find_owners(efsd->get_subdir(i), p_path)) { + return true; + } + } + + for (int i = 0; i < efsd->get_file_count(); i++) { + + Vector<String> deps = efsd->get_file_deps(i); + if (deps.find(p_path) != -1) + return true; + } + + return false; +} +void ImportDock::_reimport_attempt() { + + bool need_restart = false; + bool used_in_resources = false; + for (int i = 0; i < params->paths.size(); i++) { + Ref<ConfigFile> config; + config.instance(); + Error err = config->load(params->paths[i] + ".import"); + ERR_CONTINUE(err != OK); + + String imported_with = config->get_value("remap", "importer"); + if (imported_with != params->importer->get_importer_name()) { + need_restart = true; + if (_find_owners(EditorFileSystem::get_singleton()->get_filesystem(), params->paths[i])) { + used_in_resources = true; + } + } + } + + if (need_restart) { + label_warning->set_visible(used_in_resources); + reimport_confirm->popup_centered_minsize(); + return; + } + + _reimport(); +} + +void ImportDock::_reimport_and_restart() { + + EditorNode::get_singleton()->save_all_scenes(); + EditorResourcePreview::get_singleton()->stop(); //dont try to re-create previews after import + _reimport(); + EditorNode::get_singleton()->restart_editor(); +} + void ImportDock::_reimport() { for (int i = 0; i < params->paths.size(); i++) { @@ -416,6 +473,7 @@ void ImportDock::_notification(int p_what) { case NOTIFICATION_ENTER_TREE: { import_opts->edit(params); + label_warning->add_color_override("font_color", get_color("warning_color", "Editor")); } break; } } @@ -433,6 +491,8 @@ void ImportDock::_bind_methods() { ClassDB::bind_method(D_METHOD("_preset_selected"), &ImportDock::_preset_selected); ClassDB::bind_method(D_METHOD("_importer_selected"), &ImportDock::_importer_selected); ClassDB::bind_method(D_METHOD("_property_toggled"), &ImportDock::_property_toggled); + ClassDB::bind_method(D_METHOD("_reimport_and_restart"), &ImportDock::_reimport_and_restart); + ClassDB::bind_method(D_METHOD("_reimport_attempt"), &ImportDock::_reimport_attempt); } void ImportDock::initialize_import_options() const { @@ -469,11 +529,22 @@ ImportDock::ImportDock() { add_child(hb); import = memnew(Button); import->set_text(TTR("Reimport")); - import->connect("pressed", this, "_reimport"); + import->connect("pressed", this, "_reimport_attempt"); hb->add_spacer(); hb->add_child(import); hb->add_spacer(); + reimport_confirm = memnew(ConfirmationDialog); + reimport_confirm->get_ok()->set_text(TTR("Save scenes, re-import and restart")); + add_child(reimport_confirm); + reimport_confirm->connect("confirmed", this, "_reimport_and_restart"); + + VBoxContainer *vbc_confirm = memnew(VBoxContainer()); + vbc_confirm->add_child(memnew(Label(TTR("Changing the type of an imported file requires editor restart.")))); + label_warning = memnew(Label(TTR("WARNING: Assets exist that use this resource, they may stop loading properly."))); + vbc_confirm->add_child(label_warning); + reimport_confirm->add_child(vbc_confirm); + params = memnew(ImportDockParameters); } diff --git a/editor/import_dock.h b/editor/import_dock.h index bc992b2f7e..1d43e00b63 100644 --- a/editor/import_dock.h +++ b/editor/import_dock.h @@ -36,6 +36,7 @@ #include "editor/editor_file_system.h" #include "editor/editor_inspector.h" #include "scene/gui/box_container.h" +#include "scene/gui/dialogs.h" #include "scene/gui/menu_button.h" #include "scene/gui/option_button.h" #include "scene/gui/popup_menu.h" @@ -52,6 +53,8 @@ class ImportDock : public VBoxContainer { List<PropertyInfo> properties; Map<StringName, Variant> property_values; + ConfirmationDialog *reimport_confirm; + Label *label_warning; Button *import; ImportDockParameters *params; @@ -61,6 +64,8 @@ class ImportDock : public VBoxContainer { void _update_options(const Ref<ConfigFile> &p_config = Ref<ConfigFile>()); void _property_toggled(const StringName &p_prop, bool p_checked); + void _reimport_attempt(); + void _reimport_and_restart(); void _reimport(); enum { diff --git a/editor/plugin_config_dialog.cpp b/editor/plugin_config_dialog.cpp index 1b99059f32..88672bdf34 100644 --- a/editor/plugin_config_dialog.cpp +++ b/editor/plugin_config_dialog.cpp @@ -65,11 +65,16 @@ void PluginConfigDialog::_on_confirmed() { cf->save(path.plus_file("plugin.cfg")); if (!_edit_mode) { - String type = script_option_edit->get_item_text(script_option_edit->get_selected()); + int lang_idx = script_option_edit->get_selected(); + String lang_name = ScriptServer::get_language(lang_idx)->get_name(); Ref<Script> script; - if (type == GDScriptLanguage::get_singleton()->get_name()) { + // TODO Use script templates. Right now, this code won't add the 'tool' annotation to other languages. + // TODO Better support script languages with named classes (has_named_classes). + + if (lang_name == GDScriptLanguage::get_singleton()->get_name()) { + // Hard-coded GDScript template to keep usability until we use script templates. Ref<GDScript> gdscript = memnew(GDScript); gdscript->set_source_code( "tool\n" @@ -84,8 +89,13 @@ void PluginConfigDialog::_on_confirmed() { gdscript->set_path(script_path); ResourceSaver::save(script_path, gdscript); script = gdscript; + } else { + String script_path = path.plus_file(script_edit->get_text()); + String class_name = script_path.get_file().get_basename(); + script = ScriptServer::get_language(lang_idx)->get_template(class_name, "EditorPlugin"); + script->set_path(script_path); + ResourceSaver::save(script_path, script); } - //TODO: other languages emit_signal("plugin_ready", script.operator->(), active_edit->is_pressed() ? subfolder_edit->get_text() : ""); } else { @@ -98,8 +108,9 @@ void PluginConfigDialog::_on_cancelled() { _clear_fields(); } -void PluginConfigDialog::_on_required_text_changed(const String &p_text) { - String ext = script_option_edit->get_item_metadata(script_option_edit->get_selected()); +void PluginConfigDialog::_on_required_text_changed(const String &) { + int lang_idx = script_option_edit->get_selected(); + String ext = ScriptServer::get_language(lang_idx)->get_extension(); get_ok()->set_disabled(script_edit->get_text().get_basename().empty() || script_edit->get_text().get_extension() != ext || name_edit->get_text().empty()); } @@ -204,10 +215,11 @@ PluginConfigDialog::PluginConfigDialog() { grid->add_child(script_option_lb); script_option_edit = memnew(OptionButton); - script_option_edit->add_item(GDScriptLanguage::get_singleton()->get_name()); - script_option_edit->set_item_metadata(0, GDScriptLanguage::get_singleton()->get_extension()); + for (int i = 0; i < ScriptServer::get_language_count(); i++) { + ScriptLanguage *lang = ScriptServer::get_language(i); + script_option_edit->add_item(lang->get_name()); + } script_option_edit->select(0); - //TODO: add other languages grid->add_child(script_option_edit); Label *script_lb = memnew(Label); @@ -219,6 +231,7 @@ PluginConfigDialog::PluginConfigDialog() { script_edit->set_placeholder("\"plugin.gd\" -> res://addons/my_plugin/plugin.gd"); grid->add_child(script_edit); + // TODO Make this option work better with languages like C#. Right now, it does not work because the C# project must be compiled first. Label *active_lb = memnew(Label); active_lb->set_text(TTR("Activate now?")); grid->add_child(active_lb); diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index a42765df6b..c68023ee9b 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -174,6 +174,7 @@ void EditorAssetLibraryItemDescription::set_image(int p_type, int p_index, const if (preview_images[i].is_video) { Ref<Image> overlay = get_icon("PlayOverlay", "EditorIcons")->get_data(); Ref<Image> thumbnail = p_image->get_data(); + thumbnail = thumbnail->duplicate(); Point2 overlay_pos = Point2((thumbnail->get_width() - overlay->get_width()) / 2, (thumbnail->get_height() - overlay->get_height()) / 2); thumbnail->lock(); diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 02f6263887..98d639a2d3 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -474,7 +474,7 @@ void CanvasItemEditor::_find_canvas_items_at_pos(const Point2 &p_pos, Node *p_no if (canvas_item && canvas_item->is_visible_in_tree()) { Transform2D xform = (p_parent_xform * p_canvas_xform * canvas_item->get_transform()).affine_inverse(); - const real_t local_grab_distance = xform.basis_xform(Vector2(grab_distance, 0)).length(); + const real_t local_grab_distance = xform.basis_xform(Vector2(grab_distance, 0)).length() / zoom; if (canvas_item->_edit_is_selected_on_click(xform.xform(p_pos), local_grab_distance)) { Node2D *node = Object::cast_to<Node2D>(canvas_item); @@ -2741,10 +2741,11 @@ void CanvasItemEditor::_draw_selection() { if (canvas_item->_edit_use_pivot()) { // Draw the node's pivot - Transform2D unscaled_transform = (xform * canvas_item->get_transform().affine_inverse() * Transform2D(canvas_item->_edit_get_rotation(), canvas_item->_edit_get_position())).orthonormalized(); + Transform2D unscaled_transform = (xform * canvas_item->get_transform().affine_inverse() * Transform2D(canvas_item->_edit_get_rotation(), canvas_item->_edit_get_position() + canvas_item->_edit_get_pivot())).orthonormalized(); Transform2D simple_xform = viewport->get_transform() * unscaled_transform; + viewport->draw_set_transform_matrix(simple_xform); - viewport->draw_texture(pivot_icon, canvas_item->_edit_get_pivot() - (pivot_icon->get_size() / 2).floor()); + viewport->draw_texture(pivot_icon, -(pivot_icon->get_size() / 2).floor()); viewport->draw_set_transform_matrix(viewport->get_transform()); } @@ -3277,7 +3278,24 @@ void CanvasItemEditor::_notification(int p_what) { pivot_button->set_disabled(nb_having_pivot == 0); // Show / Hide the layout button - presets_menu->set_visible(nb_control > 0 && nb_control == selection.size()); + if (nb_control > 0 && nb_control == selection.size()) { + presets_menu->set_visible(true); + presets_menu->set_tooltip(TTR("Presets for the anchors and margins values of a Control node.")); + + // Disable if the selected node is child of a container + presets_menu->set_disabled(false); + for (List<CanvasItem *>::Element *E = selection.front(); E; E = E->next()) { + Control *control = Object::cast_to<Control>(E->get()); + if (!control || Object::cast_to<Container>(control->get_parent())) { + presets_menu->set_disabled(true); + presets_menu->set_tooltip(TTR("Children of containers have their anchors and margins values overridden by their parent.")); + break; + } + } + + } else { + presets_menu->set_visible(false); + } // Update the viewport if bones changes for (Map<BoneKey, BoneList>::Element *E = bone_list.front(); E; E = E->next()) { diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp index 8464dfd0aa..0c0cc9d635 100644 --- a/editor/plugins/editor_preview_plugins.cpp +++ b/editor/plugins/editor_preview_plugins.cpp @@ -99,12 +99,14 @@ Ref<Texture> EditorTexturePreviewPlugin::generate(const RES &p_from, const Size2 } else { Ref<Texture> tex = p_from; img = tex->get_data(); + if (img.is_valid()) { + img = img->duplicate(); + } } if (img.is_null() || img->empty()) return Ref<Texture>(); - img = img->duplicate(); img->clear_mipmaps(); if (img->is_compressed()) { @@ -332,7 +334,7 @@ Ref<Texture> EditorMaterialPreviewPlugin::generate(const RES &p_from, const Size OS::get_singleton()->delay_usec(10); } - Ref<Image> img = VS::get_singleton()->VS::get_singleton()->texture_get_data(viewport_texture); + Ref<Image> img = VS::get_singleton()->texture_get_data(viewport_texture); VS::get_singleton()->mesh_surface_set_material(sphere, 0, RID()); ERR_FAIL_COND_V(!img.is_valid(), Ref<ImageTexture>()); @@ -732,7 +734,7 @@ Ref<Texture> EditorMeshPreviewPlugin::generate(const RES &p_from, const Size2 p_ OS::get_singleton()->delay_usec(10); } - Ref<Image> img = VS::get_singleton()->VS::get_singleton()->texture_get_data(viewport_texture); + Ref<Image> img = VS::get_singleton()->texture_get_data(viewport_texture); ERR_FAIL_COND_V(img.is_null(), Ref<ImageTexture>()); VS::get_singleton()->instance_set_base(mesh_instance, RID()); @@ -852,7 +854,7 @@ Ref<Texture> EditorFontPreviewPlugin::generate_from_path(const String &p_path, c OS::get_singleton()->delay_usec(10); } - Ref<Image> img = VS::get_singleton()->VS::get_singleton()->texture_get_data(viewport_texture); + Ref<Image> img = VS::get_singleton()->texture_get_data(viewport_texture); ERR_FAIL_COND_V(img.is_null(), Ref<ImageTexture>()); img->convert(Image::FORMAT_RGBA8); diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 182738cf14..9e65d9de10 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -301,7 +301,7 @@ void ScriptEditor::_goto_script_line2(int p_line) { void ScriptEditor::_goto_script_line(REF p_script, int p_line) { Ref<Script> script = Object::cast_to<Script>(*p_script); - if (!script.is_null() && script->has_source_code()) { + if (script.is_valid() && (script->has_source_code() || script->get_path().is_resource_file())) { if (edit(p_script, p_line, 0)) { editor->push_item(p_script.ptr()); diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 60dc156782..c747e8fe5c 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -273,18 +273,12 @@ void ScriptTextEditor::_set_theme_for_script() { } } -void ScriptTextEditor::_toggle_warning_pannel(const Ref<InputEvent> &p_event) { - Ref<InputEventMouseButton> mb = p_event; - if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { - warnings_panel->set_visible(!warnings_panel->is_visible()); - } +void ScriptTextEditor::_toggle_warning_pannel() { + warnings_panel->set_visible(!warnings_panel->is_visible()); } -void ScriptTextEditor::_error_pressed(const Ref<InputEvent> &p_event) { - Ref<InputEventMouseButton> mb = p_event; - if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { - code_editor->goto_error(); - } +void ScriptTextEditor::_error_pressed() { + code_editor->goto_error(); } void ScriptTextEditor::_warning_clicked(Variant p_line) { @@ -468,7 +462,7 @@ void ScriptTextEditor::_validate_script() { } } - code_editor->get_warning_count_label()->set_text(itos(warnings.size())); + code_editor->set_warning_nb(warnings.size()); warnings_panel->clear(); warnings_panel->push_table(3); for (List<ScriptLanguage::Warning>::Element *E = warnings.front(); E; E = E->next()) { @@ -1427,7 +1421,7 @@ ScriptTextEditor::ScriptTextEditor() { code_editor = memnew(CodeTextEditor); editor_box->add_child(code_editor); - code_editor->add_constant_override("separation", 0); + code_editor->add_constant_override("separation", 2); code_editor->set_anchors_and_margins_preset(Control::PRESET_WIDE); code_editor->connect("validate_script", this, "_validate_script"); code_editor->connect("load_theme_settings", this, "_load_theme_settings"); @@ -1445,9 +1439,8 @@ ScriptTextEditor::ScriptTextEditor() { warnings_panel->set_focus_mode(FOCUS_CLICK); warnings_panel->hide(); - code_editor->get_error_label()->connect("gui_input", this, "_error_pressed"); - code_editor->get_warning_label()->connect("gui_input", this, "_toggle_warning_pannel"); - code_editor->get_warning_count_label()->connect("gui_input", this, "_toggle_warning_pannel"); + code_editor->connect("error_pressed", this, "_error_pressed"); + code_editor->connect("warning_pressed", this, "_toggle_warning_pannel"); warnings_panel->connect("meta_clicked", this, "_warning_clicked"); update_settings(); diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h index 856e442d82..6e88fc2301 100644 --- a/editor/plugins/script_text_editor.h +++ b/editor/plugins/script_text_editor.h @@ -125,8 +125,8 @@ protected: void _code_complete_script(const String &p_code, List<String> *r_options, bool &r_force); void _load_theme_settings(); void _set_theme_for_script(); - void _toggle_warning_pannel(const Ref<InputEvent> &p_event); - void _error_pressed(const Ref<InputEvent> &p_event); + void _toggle_warning_pannel(); + void _error_pressed(); void _warning_clicked(Variant p_line); void _notification(int p_what); diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index 276ca2e451..9ece812c49 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -2865,6 +2865,18 @@ void SpatialEditorViewport::update_transform_gizmo_view() { Transform xform = spatial_editor->get_gizmo_transform(); Transform camera_xform = camera->get_transform(); + + if (xform.origin.distance_squared_to(camera_xform.origin) < 0.01) { + for (int i = 0; i < 3; i++) { + VisualServer::get_singleton()->instance_set_visible(move_gizmo_instance[i], false); + VisualServer::get_singleton()->instance_set_visible(move_plane_gizmo_instance[i], false); + VisualServer::get_singleton()->instance_set_visible(rotate_gizmo_instance[i], false); + VisualServer::get_singleton()->instance_set_visible(scale_gizmo_instance[i], false); + VisualServer::get_singleton()->instance_set_visible(scale_plane_gizmo_instance[i], false); + } + return; + } + Vector3 camz = -camera_xform.get_basis().get_axis(2).normalized(); Vector3 camy = -camera_xform.get_basis().get_axis(1).normalized(); Plane p(camera_xform.origin, camz); @@ -5732,6 +5744,7 @@ void SpatialEditorPlugin::snap_cursor_to_plane(const Plane &p_plane) { } void SpatialEditor::add_gizmo_plugin(Ref<EditorSpatialGizmoPlugin> p_plugin) { + ERR_FAIL_NULL(p_plugin.ptr()); gizmo_plugins.push_back(p_plugin); _update_gizmos_menu(); SpatialEditor::get_singleton()->update_all_gizmos(); @@ -5869,7 +5882,7 @@ Ref<SpatialMaterial> EditorSpatialGizmoPlugin::get_material(const String &p_name ERR_FAIL_COND_V(!materials.has(p_name), Ref<SpatialMaterial>()); ERR_FAIL_COND_V(materials[p_name].size() == 0, Ref<SpatialMaterial>()); - if (p_gizmo.is_null()) return materials[p_name][0]; + if (p_gizmo.is_null() || materials[p_name].size() == 1) return materials[p_name][0]; int index = (p_gizmo->is_selected() ? 1 : 0) + (p_gizmo->is_editable() ? 2 : 0); @@ -5888,7 +5901,7 @@ String EditorSpatialGizmoPlugin::get_name() const { if (get_script_instance() && get_script_instance()->has_method("get_name")) { return get_script_instance()->call("get_name"); } - return TTR("Name-less gizmo"); + return TTR("Nameless gizmo"); } Ref<EditorSpatialGizmo> EditorSpatialGizmoPlugin::get_gizmo(Spatial *p_spatial) { @@ -5938,7 +5951,7 @@ void EditorSpatialGizmoPlugin::_bind_methods() { cm.default_arguments.push_back(false); BIND_VMETHOD(cm); - BIND_VMETHOD(MethodInfo(Variant::BOOL, "is_gizmo_handle_highlighted", GIZMO_REF, PropertyInfo(Variant::INT, "index"))); + BIND_VMETHOD(MethodInfo(Variant::BOOL, "is_handle_highlighted", GIZMO_REF, PropertyInfo(Variant::INT, "index"))); #undef GIZMO_REF } @@ -6008,9 +6021,9 @@ void EditorSpatialGizmoPlugin::commit_handle(EditorSpatialGizmo *p_gizmo, int p_ } } -bool EditorSpatialGizmoPlugin::is_gizmo_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int p_idx) const { - if (get_script_instance() && get_script_instance()->has_method("is_gizmo_handle_highlighted")) { - return get_script_instance()->call("is_gizmo_handle_highlighted", p_gizmo, p_idx); +bool EditorSpatialGizmoPlugin::is_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int p_idx) const { + if (get_script_instance() && get_script_instance()->has_method("is_handle_highlighted")) { + return get_script_instance()->call("is_handle_highlighted", p_gizmo, p_idx); } return false; } diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h index 87cd089428..2dc627cb27 100644 --- a/editor/plugins/spatial_editor_plugin.h +++ b/editor/plugins/spatial_editor_plugin.h @@ -110,6 +110,7 @@ public: void add_handles(const Vector<Vector3> &p_handles, const Ref<Material> &p_material, bool p_billboard = false, bool p_secondary = false); void add_solid_box(Ref<Material> &p_material, Vector3 p_size, Vector3 p_position = Vector3()); + virtual bool is_handle_highlighted(int p_idx) const; virtual String get_handle_name(int p_idx) const; virtual Variant get_handle_value(int p_idx); virtual void set_handle(int p_idx, Camera *p_camera, const Point2 &p_point); @@ -117,6 +118,7 @@ public: void set_spatial_node(Spatial *p_node); Spatial *get_spatial_node() const { return spatial_node; } + EditorSpatialGizmoPlugin *get_plugin() const { return gizmo_plugin; } Vector3 get_handle_pos(int p_idx) const; bool intersect_frustum(const Camera *p_camera, const Vector<Plane> &p_frustum); bool intersect_ray(Camera *p_camera, const Point2 &p_point, Vector3 &r_pos, Vector3 &r_normal, int *r_gizmo_handle = NULL, bool p_sec_first = false); @@ -786,7 +788,7 @@ public: virtual Variant get_handle_value(EditorSpatialGizmo *p_gizmo, int p_idx) const; virtual void set_handle(EditorSpatialGizmo *p_gizmo, int p_idx, Camera *p_camera, const Point2 &p_point); virtual void commit_handle(EditorSpatialGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false); - virtual bool is_gizmo_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int p_idx) const; + virtual bool is_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int p_idx) const; Ref<EditorSpatialGizmo> get_gizmo(Spatial *p_spatial); void set_state(int p_state); diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp index b712cfc9d3..89bb7440fe 100644 --- a/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/editor/plugins/sprite_frames_editor_plugin.cpp @@ -40,10 +40,8 @@ void SpriteFramesEditor::_gui_input(Ref<InputEvent> p_event) { void SpriteFramesEditor::_notification(int p_what) { - if (p_what == NOTIFICATION_PHYSICS_PROCESS) { - } - if (p_what == NOTIFICATION_ENTER_TREE) { + load->set_icon(get_icon("Load", "EditorIcons")); copy->set_icon(get_icon("ActionCopy", "EditorIcons")); paste->set_icon(get_icon("ActionPaste", "EditorIcons")); @@ -54,14 +52,9 @@ void SpriteFramesEditor::_notification(int p_what) { _delete->set_icon(get_icon("Remove", "EditorIcons")); new_anim->set_icon(get_icon("New", "EditorIcons")); remove_anim->set_icon(get_icon("Remove", "EditorIcons")); - } - - if (p_what == NOTIFICATION_READY) { + } else if (p_what == NOTIFICATION_READY) { - //NodePath("/root")->connect("node_removed", this,"_node_removed",Vector<Variant>(),true); - } - - if (p_what == NOTIFICATION_DRAW) { + add_constant_override("autohide", 1); // Fixes the dragger always showing up. } } @@ -649,7 +642,6 @@ void SpriteFramesEditor::drop_data_fw(const Point2 &p_point, const Variant &p_da void SpriteFramesEditor::_bind_methods() { - ClassDB::bind_method(D_METHOD("_gui_input"), &SpriteFramesEditor::_gui_input); ClassDB::bind_method(D_METHOD("_load_pressed"), &SpriteFramesEditor::_load_pressed); ClassDB::bind_method(D_METHOD("_empty_pressed"), &SpriteFramesEditor::_empty_pressed); ClassDB::bind_method(D_METHOD("_empty2_pressed"), &SpriteFramesEditor::_empty2_pressed); @@ -673,31 +665,25 @@ void SpriteFramesEditor::_bind_methods() { SpriteFramesEditor::SpriteFramesEditor() { - //add_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_stylebox("panel","Panel")); - - split = memnew(HSplitContainer); - add_child(split); - VBoxContainer *vbc_animlist = memnew(VBoxContainer); - split->add_child(vbc_animlist); + add_child(vbc_animlist); vbc_animlist->set_custom_minimum_size(Size2(150, 0) * EDSCALE); - //vbc_animlist->set_v_size_flags(SIZE_EXPAND_FILL); VBoxContainer *sub_vb = memnew(VBoxContainer); - vbc_animlist->add_margin_child(TTR("Animations"), sub_vb, true); + vbc_animlist->add_margin_child(TTR("Animations:"), sub_vb, true); sub_vb->set_v_size_flags(SIZE_EXPAND_FILL); HBoxContainer *hbc_animlist = memnew(HBoxContainer); sub_vb->add_child(hbc_animlist); - new_anim = memnew(Button); - new_anim->set_flat(true); + new_anim = memnew(ToolButton); + new_anim->set_tooltip(TTR("New Animation")); hbc_animlist->add_child(new_anim); new_anim->set_h_size_flags(SIZE_EXPAND_FILL); new_anim->connect("pressed", this, "_animation_add"); - remove_anim = memnew(Button); - remove_anim->set_flat(true); + remove_anim = memnew(ToolButton); + remove_anim->set_tooltip(TTR("Remove Animation")); hbc_animlist->add_child(remove_anim); remove_anim->connect("pressed", this, "_animation_remove"); @@ -722,56 +708,47 @@ SpriteFramesEditor::SpriteFramesEditor() { anim_loop->connect("pressed", this, "_animation_loop_changed"); VBoxContainer *vbc = memnew(VBoxContainer); - split->add_child(vbc); + add_child(vbc); vbc->set_h_size_flags(SIZE_EXPAND_FILL); sub_vb = memnew(VBoxContainer); - vbc->add_margin_child(TTR("Animation Frames"), sub_vb, true); + vbc->add_margin_child(TTR("Animation Frames:"), sub_vb, true); HBoxContainer *hbc = memnew(HBoxContainer); sub_vb->add_child(hbc); - //animations = memnew( ItemList ); - - load = memnew(Button); - load->set_flat(true); + load = memnew(ToolButton); load->set_tooltip(TTR("Load Resource")); hbc->add_child(load); - copy = memnew(Button); - copy->set_flat(true); + copy = memnew(ToolButton); copy->set_tooltip(TTR("Copy")); hbc->add_child(copy); - paste = memnew(Button); - paste->set_flat(true); + paste = memnew(ToolButton); paste->set_tooltip(TTR("Paste")); hbc->add_child(paste); - empty = memnew(Button); - empty->set_flat(true); + empty = memnew(ToolButton); empty->set_tooltip(TTR("Insert Empty (Before)")); hbc->add_child(empty); - empty2 = memnew(Button); - empty2->set_flat(true); + empty2 = memnew(ToolButton); empty2->set_tooltip(TTR("Insert Empty (After)")); hbc->add_child(empty2); hbc->add_spacer(false); - move_up = memnew(Button); - move_up->set_flat(true); + move_up = memnew(ToolButton); move_up->set_tooltip(TTR("Move (Before)")); hbc->add_child(move_up); - move_down = memnew(Button); - move_down->set_flat(true); + move_down = memnew(ToolButton); move_down->set_tooltip(TTR("Move (After)")); hbc->add_child(move_down); - _delete = memnew(Button); - _delete->set_flat(true); + _delete = memnew(ToolButton); + _delete->set_tooltip(TTR("Delete")); hbc->add_child(_delete); file = memnew(EditorFileDialog); @@ -787,7 +764,6 @@ SpriteFramesEditor::SpriteFramesEditor() { tree->set_fixed_column_width(thumbnail_size * 3 / 2); tree->set_max_text_lines(2); tree->set_fixed_icon_size(Size2(thumbnail_size, thumbnail_size)); - //tree->set_min_icon_size(Size2(thumbnail_size,thumbnail_size)); tree->set_drag_forwarding(this); sub_vb->add_child(tree); diff --git a/editor/plugins/sprite_frames_editor_plugin.h b/editor/plugins/sprite_frames_editor_plugin.h index 3ef4ba290b..55dd10074e 100644 --- a/editor/plugins/sprite_frames_editor_plugin.h +++ b/editor/plugins/sprite_frames_editor_plugin.h @@ -39,25 +39,25 @@ #include "scene/gui/split_container.h" #include "scene/gui/tree.h" -class SpriteFramesEditor : public PanelContainer { - - GDCLASS(SpriteFramesEditor, PanelContainer); - - Button *load; - Button *_delete; - Button *copy; - Button *paste; - Button *empty; - Button *empty2; - Button *move_up; - Button *move_down; +class SpriteFramesEditor : public HSplitContainer { + + GDCLASS(SpriteFramesEditor, HSplitContainer); + + ToolButton *load; + ToolButton *_delete; + ToolButton *copy; + ToolButton *paste; + ToolButton *empty; + ToolButton *empty2; + ToolButton *move_up; + ToolButton *move_down; ItemList *tree; bool loading_scene; int sel; HSplitContainer *split; - Button *new_anim; - Button *remove_anim; + ToolButton *new_anim; + ToolButton *remove_anim; Tree *animations; SpinBox *anim_speed; diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp index 6bd0309d17..3eeb871380 100644 --- a/editor/plugins/texture_region_editor_plugin.cpp +++ b/editor/plugins/texture_region_editor_plugin.cpp @@ -51,6 +51,8 @@ void TextureRegionEditor::_region_draw() { Ref<Texture> base_tex = NULL; if (node_sprite) base_tex = node_sprite->get_texture(); + else if (node_sprite_3d) + base_tex = node_sprite_3d->get_texture(); else if (node_ninepatch) base_tex = node_ninepatch->get_texture(); else if (obj_styleBox.is_valid()) @@ -285,6 +287,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) { Rect2 r; if (node_sprite) r = node_sprite->get_region_rect(); + else if (node_sprite_3d) + r = node_sprite_3d->get_region_rect(); else if (node_ninepatch) r = node_ninepatch->get_region_rect(); else if (obj_styleBox.is_valid()) @@ -298,6 +302,9 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) { if (node_sprite) { undo_redo->add_do_method(node_sprite, "set_region_rect", rect); undo_redo->add_undo_method(node_sprite, "set_region_rect", node_sprite->get_region_rect()); + } else if (node_sprite_3d) { + undo_redo->add_do_method(node_sprite_3d, "set_region_rect", rect); + undo_redo->add_undo_method(node_sprite_3d, "set_region_rect", node_sprite_3d->get_region_rect()); } else if (node_ninepatch) { undo_redo->add_do_method(node_ninepatch, "set_region_rect", rect); undo_redo->add_undo_method(node_ninepatch, "set_region_rect", node_ninepatch->get_region_rect()); @@ -325,6 +332,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) { drag = true; if (node_sprite) rect_prev = node_sprite->get_region_rect(); + else if (node_sprite_3d) + rect_prev = node_sprite_3d->get_region_rect(); else if (node_ninepatch) rect_prev = node_ninepatch->get_region_rect(); else if (obj_styleBox.is_valid()) @@ -363,6 +372,9 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) { if (node_sprite) { undo_redo->add_do_method(node_sprite, "set_region_rect", node_sprite->get_region_rect()); undo_redo->add_undo_method(node_sprite, "set_region_rect", rect_prev); + } else if (node_sprite_3d) { + undo_redo->add_do_method(node_sprite_3d, "set_region_rect", node_sprite_3d->get_region_rect()); + undo_redo->add_undo_method(node_sprite_3d, "set_region_rect", rect_prev); } else if (atlas_tex.is_valid()) { undo_redo->add_do_method(atlas_tex.ptr(), "set_region", atlas_tex->get_region()); undo_redo->add_undo_method(atlas_tex.ptr(), "set_region", rect_prev); @@ -590,6 +602,8 @@ void TextureRegionEditor::_zoom_out() { void TextureRegionEditor::apply_rect(const Rect2 &p_rect) { if (node_sprite) node_sprite->set_region_rect(p_rect); + else if (node_sprite_3d) + node_sprite_3d->set_region_rect(p_rect); else if (node_ninepatch) node_ninepatch->set_region_rect(p_rect); else if (obj_styleBox.is_valid()) @@ -601,6 +615,8 @@ void TextureRegionEditor::apply_rect(const Rect2 &p_rect) { void TextureRegionEditor::_update_rect() { if (node_sprite) rect = node_sprite->get_region_rect(); + else if (node_sprite_3d) + rect = node_sprite_3d->get_region_rect(); else if (node_ninepatch) rect = node_ninepatch->get_region_rect(); else if (obj_styleBox.is_valid()) @@ -616,6 +632,8 @@ void TextureRegionEditor::_update_autoslice() { Ref<Texture> texture = NULL; if (node_sprite) texture = node_sprite->get_texture(); + else if (node_sprite_3d) + texture = node_sprite_3d->get_texture(); else if (node_ninepatch) texture = node_ninepatch->get_texture(); else if (obj_styleBox.is_valid()) @@ -702,9 +720,10 @@ void TextureRegionEditor::_notification(int p_what) { } void TextureRegionEditor::_node_removed(Object *p_obj) { - if (p_obj == node_sprite || p_obj == node_ninepatch || p_obj == obj_styleBox.ptr() || p_obj == atlas_tex.ptr()) { - node_ninepatch = NULL; + if (p_obj == node_sprite || p_obj == node_sprite_3d || p_obj == node_ninepatch || p_obj == obj_styleBox.ptr() || p_obj == atlas_tex.ptr()) { node_sprite = NULL; + node_sprite_3d = NULL; + node_ninepatch = NULL; obj_styleBox = Ref<StyleBox>(NULL); atlas_tex = Ref<AtlasTexture>(NULL); hide(); @@ -743,6 +762,10 @@ bool TextureRegionEditor::is_ninepatch() { return node_ninepatch != NULL; } +Sprite3D *TextureRegionEditor::get_sprite_3d() { + return node_sprite_3d; +} + Sprite *TextureRegionEditor::get_sprite() { return node_sprite; } @@ -750,6 +773,8 @@ Sprite *TextureRegionEditor::get_sprite() { void TextureRegionEditor::edit(Object *p_obj) { if (node_sprite) node_sprite->remove_change_receptor(this); + if (node_sprite_3d) + node_sprite_3d->remove_change_receptor(this); if (node_ninepatch) node_ninepatch->remove_change_receptor(this); if (obj_styleBox.is_valid()) @@ -758,6 +783,7 @@ void TextureRegionEditor::edit(Object *p_obj) { atlas_tex->remove_change_receptor(this); if (p_obj) { node_sprite = Object::cast_to<Sprite>(p_obj); + node_sprite_3d = Object::cast_to<Sprite3D>(p_obj); node_ninepatch = Object::cast_to<NinePatchRect>(p_obj); if (Object::cast_to<StyleBoxTexture>(p_obj)) obj_styleBox = Ref<StyleBoxTexture>(Object::cast_to<StyleBoxTexture>(p_obj)); @@ -767,12 +793,13 @@ void TextureRegionEditor::edit(Object *p_obj) { _edit_region(); } else { node_sprite = NULL; + node_sprite_3d = NULL; node_ninepatch = NULL; obj_styleBox = Ref<StyleBoxTexture>(NULL); atlas_tex = Ref<AtlasTexture>(NULL); } edit_draw->update(); - if (node_sprite && !node_sprite->is_region()) { + if ((node_sprite && !node_sprite->is_region()) || (node_sprite_3d && !node_sprite_3d->is_region())) { set_process(true); } if (!p_obj) { @@ -792,6 +819,8 @@ void TextureRegionEditor::_edit_region() { Ref<Texture> texture = NULL; if (node_sprite) texture = node_sprite->get_texture(); + else if (node_sprite_3d) + texture = node_sprite_3d->get_texture(); else if (node_ninepatch) texture = node_ninepatch->get_texture(); else if (obj_styleBox.is_valid()) @@ -834,6 +863,7 @@ Vector2 TextureRegionEditor::snap_point(Vector2 p_target) const { TextureRegionEditor::TextureRegionEditor(EditorNode *p_editor) { node_sprite = NULL; + node_sprite_3d = NULL; node_ninepatch = NULL; obj_styleBox = Ref<StyleBoxTexture>(NULL); atlas_tex = Ref<AtlasTexture>(NULL); @@ -976,13 +1006,13 @@ void TextureRegionEditorPlugin::edit(Object *p_object) { } bool TextureRegionEditorPlugin::handles(Object *p_object) const { - return p_object->is_class("Sprite") || p_object->is_class("NinePatchRect") || p_object->is_class("StyleBoxTexture") || p_object->is_class("AtlasTexture"); + return p_object->is_class("Sprite") || p_object->is_class("Sprite3D") || p_object->is_class("NinePatchRect") || p_object->is_class("StyleBoxTexture") || p_object->is_class("AtlasTexture"); } void TextureRegionEditorPlugin::make_visible(bool p_visible) { if (p_visible) { texture_region_button->show(); - if (region_editor->is_stylebox() || region_editor->is_atlas_texture() || region_editor->is_ninepatch() || (region_editor->get_sprite() && region_editor->get_sprite()->is_region()) || texture_region_button->is_pressed()) { + if (region_editor->is_stylebox() || region_editor->is_atlas_texture() || region_editor->is_ninepatch() || (region_editor->get_sprite() && region_editor->get_sprite()->is_region()) || (region_editor->get_sprite_3d() && region_editor->get_sprite_3d()->is_region()) || texture_region_button->is_pressed()) { editor->make_bottom_panel_item_visible(region_editor); } } else { diff --git a/editor/plugins/texture_region_editor_plugin.h b/editor/plugins/texture_region_editor_plugin.h index e4d7971160..19eaef9bc3 100644 --- a/editor/plugins/texture_region_editor_plugin.h +++ b/editor/plugins/texture_region_editor_plugin.h @@ -35,6 +35,7 @@ #include "editor/editor_node.h" #include "editor/editor_plugin.h" #include "scene/2d/sprite.h" +#include "scene/3d/sprite_3d.h" #include "scene/gui/nine_patch_rect.h" #include "scene/resources/style_box.h" #include "scene/resources/texture.h" @@ -83,8 +84,9 @@ class TextureRegionEditor : public VBoxContainer { Vector2 snap_step; Vector2 snap_separation; - NinePatchRect *node_ninepatch; Sprite *node_sprite; + Sprite3D *node_sprite_3d; + NinePatchRect *node_ninepatch; Ref<StyleBoxTexture> obj_styleBox; Ref<AtlasTexture> atlas_tex; @@ -132,6 +134,7 @@ public: bool is_stylebox(); bool is_atlas_texture(); bool is_ninepatch(); + Sprite3D *get_sprite_3d(); Sprite *get_sprite(); void edit(Object *p_obj); diff --git a/editor/project_export.cpp b/editor/project_export.cpp index 976eff0c56..ec64d76b18 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -1266,7 +1266,6 @@ ProjectExportDialog::ProjectExportDialog() { export_pck_zip->connect("file_selected", this, "_export_pck_zip_selected"); export_error = memnew(Label); - export_error->set_autowrap(true); main_vb->add_child(export_error); export_error->hide(); export_error->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor")); @@ -1298,12 +1297,12 @@ ProjectExportDialog::ProjectExportDialog() { export_project->connect("file_selected", this, "_export_project_to_path"); export_project->get_line_edit()->connect("text_changed", this, "_validate_export_path"); - export_debug = memnew(CheckButton); + export_debug = memnew(CheckBox); export_debug->set_text(TTR("Export With Debug")); export_debug->set_pressed(true); export_project->get_vbox()->add_child(export_debug); - export_pck_zip_debug = memnew(CheckButton); + export_pck_zip_debug = memnew(CheckBox); export_pck_zip_debug->set_text(TTR("Export With Debug")); export_pck_zip_debug->set_pressed(true); export_pck_zip->get_vbox()->add_child(export_pck_zip_debug); diff --git a/editor/project_export.h b/editor/project_export.h index b292976a78..f8b6484477 100644 --- a/editor/project_export.h +++ b/editor/project_export.h @@ -141,8 +141,8 @@ private: FileDialog *export_pck_zip; FileDialog *export_project; - CheckButton *export_debug; - CheckButton *export_pck_zip_debug; + CheckBox *export_debug; + CheckBox *export_pck_zip_debug; void _open_export_template_manager(); diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index b8fb9d4ab0..e31851b3f1 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -83,6 +83,8 @@ private: Container *name_container; Container *path_container; Container *install_path_container; + Container *rasterizer_container; + Ref<ButtonGroup> rasterizer_button_group; Label *msg; LineEdit *project_path; LineEdit *project_name; @@ -471,6 +473,13 @@ private: if (mode == MODE_NEW) { ProjectSettings::CustomMap initial_settings; + if (rasterizer_button_group->get_pressed_button()->get_meta("driver_name") == "GLES3") { + initial_settings["rendering/quality/driver/driver_name"] = "GLES3"; + } else { + initial_settings["rendering/quality/driver/driver_name"] = "GLES2"; + initial_settings["rendering/vram_compression/import_etc2"] = false; + initial_settings["rendering/vram_compression/import_etc"] = true; + } initial_settings["application/config/name"] = project_name->get_text(); initial_settings["application/config/icon"] = "res://icon.png"; initial_settings["rendering/environment/default_environment"] = "res://default_env.tres"; @@ -687,6 +696,7 @@ public: msg->hide(); install_path_container->hide(); install_status_rect->hide(); + rasterizer_container->hide(); get_ok()->set_disabled(false); ProjectSettings *current = memnew(ProjectSettings); @@ -738,6 +748,7 @@ public: get_ok()->set_text(TTR("Import & Edit")); name_container->hide(); install_path_container->hide(); + rasterizer_container->hide(); project_path->grab_focus(); } else if (mode == MODE_NEW) { @@ -746,6 +757,7 @@ public: get_ok()->set_text(TTR("Create & Edit")); name_container->show(); install_path_container->hide(); + rasterizer_container->show(); project_name->call_deferred("grab_focus"); project_name->call_deferred("select_all"); @@ -755,13 +767,14 @@ public: get_ok()->set_text(TTR("Install & Edit")); name_container->hide(); install_path_container->hide(); + rasterizer_container->hide(); project_path->grab_focus(); } _test_path(); } - popup_centered(Size2(500, 0) * EDSCALE); + popup_centered_minsize(Size2(500, 0) * EDSCALE); } ProjectDialog() { @@ -840,6 +853,48 @@ public: msg->set_align(Label::ALIGN_CENTER); vb->add_child(msg); + // rasterizer selection + rasterizer_container = memnew(VBoxContainer); + vb->add_child(rasterizer_container); + l = memnew(Label); + l->set_text(TTR("Renderer:")); + rasterizer_container->add_child(l); + Container *rshb = memnew(HBoxContainer); + rasterizer_container->add_child(rshb); + rasterizer_button_group.instance(); + + Container *rvb = memnew(VBoxContainer); + rvb->set_h_size_flags(SIZE_EXPAND_FILL); + rshb->add_child(rvb); + Button *rs_button = memnew(CheckBox); + rs_button->set_button_group(rasterizer_button_group); + rs_button->set_text(TTR("OpenGL ES 3.0")); + rs_button->set_meta("driver_name", "GLES3"); + rs_button->set_pressed(true); + rvb->add_child(rs_button); + l = memnew(Label); + l->set_text(TTR("Higher visual quality\nAll features available\nIncompatible with older hardware\nNot recommended for web games")); + rvb->add_child(l); + + rshb->add_child(memnew(VSeparator)); + + rvb = memnew(VBoxContainer); + rvb->set_h_size_flags(SIZE_EXPAND_FILL); + rshb->add_child(rvb); + rs_button = memnew(CheckBox); + rs_button->set_button_group(rasterizer_button_group); + rs_button->set_text(TTR("OpenGL ES 2.0")); + rs_button->set_meta("driver_name", "GLES2"); + rvb->add_child(rs_button); + l = memnew(Label); + l->set_text(TTR("Lower visual quality\nSome features not available\nWorks on most hardware\nRecommended for web games")); + rvb->add_child(l); + + l = memnew(Label); + l->set_text(TTR("Renderer can be changed later, but scenes may need to be adjusted.")); + l->set_align(Label::ALIGN_CENTER); + rasterizer_container->add_child(l); + fdialog = memnew(FileDialog); fdialog->set_access(FileDialog::ACCESS_FILESYSTEM); fdialog_install = memnew(FileDialog); @@ -1471,6 +1526,13 @@ void ProjectManager::_open_selected_projects_ask() { } int config_version = (int)cf->get_value("", "config_version", 0); + + // Check if the config_version property was empty or 0 + if (config_version == 0) { + ask_update_settings->set_text(vformat(TTR("The following project settings file does not specify the version of Godot through which it was created.\n\n%s\n\nIf you proceed with opening it, it will be converted to Godot's current configuration file format.\nWarning: You will not be able to open the project with previous versions of the engine anymore."), conf)); + ask_update_settings->popup_centered_minsize(); + return; + } // Check if we need to convert project settings from an earlier engine version if (config_version < ProjectSettings::CONFIG_VERSION) { ask_update_settings->set_text(vformat(TTR("The following project settings file was generated by an older engine version, and needs to be converted for this version:\n\n%s\n\nDo you want to convert it?\nWarning: You will not be able to open the project with previous versions of the engine anymore."), conf)); diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp index dd31853e73..cc33550ac9 100644 --- a/editor/project_settings_editor.cpp +++ b/editor/project_settings_editor.cpp @@ -1606,7 +1606,8 @@ TabContainer *ProjectSettingsEditor::get_tabs() { } void ProjectSettingsEditor::_editor_restart() { - EditorNode::get_singleton()->save_all_scenes_and_restart(); + EditorNode::get_singleton()->save_all_scenes(); + EditorNode::get_singleton()->restart_editor(); } void ProjectSettingsEditor::_editor_restart_request() { diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index be1c4a36bd..738d747956 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -565,6 +565,12 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { //check that from node to root, all owners are right + if (root->get_scene_inherited_state().is_valid()) { + accept->set_text(TTR("Can't reparent nodes in inherited scenes, order of nodes can't change.")); + accept->popup_centered_minsize(); + return; + } + if (node->get_owner() != root) { accept->set_text(TTR("Node must belong to the edited scene to become root.")); accept->popup_centered_minsize(); diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index 7e4baa1533..6602d2974f 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -678,6 +678,11 @@ void SceneTreeEditor::_renamed() { error->set_text(TTR("Invalid node name, the following characters are not allowed:") + "\n" + Node::invalid_character); error->popup_centered_minsize(); + if (new_name.empty()) { + which->set_text(0, n->get_name()); + return; + } + which->set_text(0, new_name); } diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp index acc735d571..5f6459045a 100644 --- a/editor/script_editor_debugger.cpp +++ b/editor/script_editor_debugger.cpp @@ -898,6 +898,10 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da item.name = strings[2]; item.script = strings[0]; item.line = strings[1].to_int(); + } else if (strings.size() == 4) { //Built-in scripts have an :: in their name + item.name = strings[3]; + item.script = strings[0] + "::" + strings[1]; + item.line = strings[2].to_int(); } } else { diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index e4d5573a9a..ecd35cb930 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -375,7 +375,8 @@ void EditorSettingsDialog::_focus_current_search_box() { } void EditorSettingsDialog::_editor_restart() { - EditorNode::get_singleton()->save_all_scenes_and_restart(); + EditorNode::get_singleton()->save_all_scenes(); + EditorNode::get_singleton()->restart_editor(); } void EditorSettingsDialog::_editor_restart_request() { diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp index 9f3a0e78f6..268a765994 100644 --- a/editor/spatial_editor_gizmos.cpp +++ b/editor/spatial_editor_gizmos.cpp @@ -99,26 +99,63 @@ void EditorSpatialGizmo::clear() { void EditorSpatialGizmo::redraw() { + if (get_script_instance() && get_script_instance()->has_method("redraw")) { + get_script_instance()->call("redraw"); + return; + } + ERR_FAIL_COND(!gizmo_plugin); gizmo_plugin->redraw(this); } String EditorSpatialGizmo::get_handle_name(int p_idx) const { + + if (get_script_instance() && get_script_instance()->has_method("get_handle_name")) { + return get_script_instance()->call("get_handle_name", p_idx); + } + ERR_FAIL_COND_V(!gizmo_plugin, ""); return gizmo_plugin->get_handle_name(this, p_idx); } +bool EditorSpatialGizmo::is_handle_highlighted(int p_idx) const { + + if (get_script_instance() && get_script_instance()->has_method("is_handle_highlighted")) { + return get_script_instance()->call("is_handle_highlighted", p_idx); + } + + ERR_FAIL_COND_V(!gizmo_plugin, false); + return gizmo_plugin->is_handle_highlighted(this, p_idx); +} + Variant EditorSpatialGizmo::get_handle_value(int p_idx) { + + if (get_script_instance() && get_script_instance()->has_method("get_handle_value")) { + return get_script_instance()->call("get_handle_value", p_idx); + } + ERR_FAIL_COND_V(!gizmo_plugin, Variant()); return gizmo_plugin->get_handle_value(this, p_idx); } void EditorSpatialGizmo::set_handle(int p_idx, Camera *p_camera, const Point2 &p_point) { + + if (get_script_instance() && get_script_instance()->has_method("set_handle")) { + get_script_instance()->call("set_handle", p_idx, p_camera, p_point); + return; + } + ERR_FAIL_COND(!gizmo_plugin); return gizmo_plugin->set_handle(this, p_idx, p_camera, p_point); } void EditorSpatialGizmo::commit_handle(int p_idx, const Variant &p_restore, bool p_cancel) { + + if (get_script_instance() && get_script_instance()->has_method("commit_handle")) { + get_script_instance()->call("commit_handle", p_idx, p_restore, p_cancel); + return; + } + ERR_FAIL_COND(!gizmo_plugin); return gizmo_plugin->commit_handle(this, p_idx, p_restore, p_cancel); } @@ -298,7 +335,7 @@ void EditorSpatialGizmo::add_handles(const Vector<Vector3> &p_handles, const Ref for (int i = 0; i < p_handles.size(); i++) { Color col(1, 1, 1, 1); - if (gizmo_plugin->is_gizmo_handle_highlighted(this, i)) + if (is_handle_highlighted(i)) col = Color(0, 0, 1, 0.9); if (SpatialEditor::get_singleton()->get_over_gizmo_handle() != i) @@ -514,7 +551,10 @@ bool EditorSpatialGizmo::intersect_ray(Camera *p_camera, const Point2 &p_point, Transform t = spatial_node->get_global_transform(); t.orthonormalize(); - t.set_look_at(t.origin, p_camera->get_camera_transform().origin, Vector3(0, 1, 0)); + Vector3 camera_position = p_camera->get_camera_transform().origin; + if (camera_position.distance_squared_to(t.origin) > 0.01) { + t.set_look_at(t.origin, camera_position, Vector3(0, 1, 0)); + } float scale = t.origin.distance_to(p_camera->get_camera_transform().origin); @@ -526,16 +566,18 @@ bool EditorSpatialGizmo::intersect_ray(Camera *p_camera, const Point2 &p_point, Point2 center = p_camera->unproject_position(t.origin); - Transform oct = p_camera->get_camera_transform(); + Transform orig_camera_transform = p_camera->get_camera_transform(); - p_camera->look_at(t.origin, Vector3(0, 1, 0)); + if (orig_camera_transform.origin.distance_squared_to(t.origin) > 0.01) { + p_camera->look_at(t.origin, Vector3(0, 1, 0)); + } Vector3 c0 = t.xform(Vector3(selectable_icon_size, selectable_icon_size, 0) * scale); Vector3 c1 = t.xform(Vector3(-selectable_icon_size, -selectable_icon_size, 0) * scale); Point2 p0 = p_camera->unproject_position(c0); Point2 p1 = p_camera->unproject_position(c1); - p_camera->set_global_transform(oct); + p_camera->set_global_transform(orig_camera_transform); Rect2 rect(p0, p1 - p0); @@ -690,11 +732,14 @@ void EditorSpatialGizmo::_bind_methods() { ClassDB::bind_method(D_METHOD("add_unscaled_billboard", "material", "default_scale"), &EditorSpatialGizmo::add_unscaled_billboard, DEFVAL(1)); ClassDB::bind_method(D_METHOD("add_handles", "handles", "material", "billboard", "secondary"), &EditorSpatialGizmo::add_handles, DEFVAL(false), DEFVAL(false)); ClassDB::bind_method(D_METHOD("set_spatial_node", "node"), &EditorSpatialGizmo::_set_spatial_node); + ClassDB::bind_method(D_METHOD("get_spatial_node"), &EditorSpatialGizmo::get_spatial_node); + ClassDB::bind_method(D_METHOD("get_plugin"), &EditorSpatialGizmo::get_plugin); ClassDB::bind_method(D_METHOD("clear"), &EditorSpatialGizmo::clear); ClassDB::bind_method(D_METHOD("set_hidden", "hidden"), &EditorSpatialGizmo::set_hidden); BIND_VMETHOD(MethodInfo("redraw")); BIND_VMETHOD(MethodInfo(Variant::STRING, "get_handle_name", PropertyInfo(Variant::INT, "index"))); + BIND_VMETHOD(MethodInfo(Variant::BOOL, "is_handle_highlighted", PropertyInfo(Variant::INT, "index"))); MethodInfo hvget(Variant::NIL, "get_handle_value", PropertyInfo(Variant::INT, "index")); hvget.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT; @@ -2117,7 +2162,7 @@ void SoftBodySpatialGizmoPlugin::commit_handle(EditorSpatialGizmo *p_gizmo, int soft_body->pin_point_toggle(p_idx); } -bool SoftBodySpatialGizmoPlugin::is_gizmo_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int idx) const { +bool SoftBodySpatialGizmoPlugin::is_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int idx) const { SoftBody *soft_body = Object::cast_to<SoftBody>(p_gizmo->get_spatial_node()); return soft_body->is_point_pinned(idx); } @@ -2369,8 +2414,8 @@ void ParticlesGizmoPlugin::commit_handle(EditorSpatialGizmo *p_gizmo, int p_idx, UndoRedo *ur = SpatialEditor::get_singleton()->get_undo_redo(); ur->create_action(TTR("Change Particles AABB")); - ur->add_do_method(particles, "set_custom_aabb", particles->get_visibility_aabb()); - ur->add_undo_method(particles, "set_custom_aabb", p_restore); + ur->add_do_method(particles, "set_visibility_aabb", particles->get_visibility_aabb()); + ur->add_undo_method(particles, "set_visibility_aabb", p_restore); ur->commit_action(); } diff --git a/editor/spatial_editor_gizmos.h b/editor/spatial_editor_gizmos.h index 40e137cded..0d89fb0f03 100644 --- a/editor/spatial_editor_gizmos.h +++ b/editor/spatial_editor_gizmos.h @@ -214,7 +214,7 @@ public: String get_handle_name(const EditorSpatialGizmo *p_gizmo, int p_idx) const; Variant get_handle_value(EditorSpatialGizmo *p_gizmo, int p_idx) const; void commit_handle(EditorSpatialGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel); - bool is_gizmo_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int idx) const; + bool is_handle_highlighted(const EditorSpatialGizmo *p_gizmo, int idx) const; SoftBodySpatialGizmoPlugin(); }; diff --git a/editor/translations/af.po b/editor/translations/af.po index cf00039516..61e9a5d41c 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -552,22 +552,14 @@ msgstr "Zoem Uit" msgid "Reset Zoom" msgstr "Herset Zoem" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Reël:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Kol:" - #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" msgstr "Metode in teiken Nodus moet gespesifiseer word!" @@ -878,8 +870,8 @@ msgstr "Skrap gekose lêers?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Skrap" @@ -1306,9 +1298,26 @@ msgid "Storing File:" msgstr "Leêr word gebêre:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Verpak" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Sjabloon lêer nie gevind nie:\n" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp #, fuzzy msgid "Template file not found:" @@ -3286,6 +3295,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4249,6 +4271,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6263,7 +6295,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6341,8 +6373,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Animasie Zoem." + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Optimaliseer Animasie" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6353,8 +6391,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Animasie Zoem." #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7109,6 +7148,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7123,6 +7194,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7808,6 +7892,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8603,10 +8699,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8998,6 +9090,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Ongeldige naam." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Ongeldige naam." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9033,6 +9208,54 @@ msgstr "Kon nie vouer skep nie." msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Ongeldige naam." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Ongeldige naam." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Ongeldige Pad." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Ongeldige naam." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9114,6 +9337,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9269,6 +9499,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9283,13 +9520,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9386,10 +9619,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9473,15 +9714,17 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Line:" +#~ msgstr "Reël:" + +#~ msgid "Col:" +#~ msgstr "Kol:" + #, fuzzy #~ msgid "Split already exists." #~ msgstr "AutoLaai '%s' bestaan reeds!" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "Ongeldige Pad." - -#, fuzzy #~ msgid "Remove Split" #~ msgstr "Verwyder Seleksie" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index c9ee996993..7fcfcc542b 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -16,7 +16,7 @@ # Rached Noureddine <rached.noureddine@gmail.com>, 2018. # Rex_sa <asd1234567890m@gmail.com>, 2017, 2018. # Wajdi Feki <wajdi.feki@gmail.com>, 2017. -# Omar Aglan <omar.aglan91@yahoo.com>, 2018. +# Omar Aglan <omar.aglan91@yahoo.com>, 2018, 2019. # Codes Otaku <ilyas.gamerz@gmail.com>, 2018. # Takai Eddine Kennouche <takai.kenn@gmail.com>, 2018. # Mohamed El-Baz <albaz2000eg@gmail.com>, 2018. @@ -26,8 +26,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:38+0100\n" -"Last-Translator: Mohammad Fares <mhdchehade@gmail.com>\n" +"PO-Revision-Date: 2019-01-21 19:30+0000\n" +"Last-Translator: Omar Aglan <omar.aglan91@yahoo.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" "Language: ar\n" @@ -36,7 +36,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Poedit 2.2\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -567,22 +567,13 @@ msgstr "إبعاد" msgid "Reset Zoom" msgstr "إرجاع التكبير" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "ØØ¬Ù… الخطوط:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "الخط:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "العمود:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -890,8 +881,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "مسØ" @@ -1313,9 +1304,26 @@ msgid "Storing File:" msgstr "تخزين الملÙ:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "ÙŠÙŽØØ²Ù…\"ينتج المل٠المضغوط\"" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "مل٠النموذج غير موجود:" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "مل٠النموذج غير موجود:" @@ -2365,7 +2373,7 @@ msgstr "المجتمع" #: editor/editor_node.cpp msgid "About" -msgstr "ØÙˆÙ„" +msgstr "عن" #: editor/editor_node.cpp msgid "Play the project." @@ -3363,6 +3371,19 @@ msgstr "إعداد Ù…ÙØ³Ø¨Ù‚..." msgid "Reimport" msgstr "إعادة إستيراد" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "ÙØ´Ù„ تØÙ…يل المورد." @@ -4350,6 +4371,16 @@ msgid "Move CanvasItem" msgstr "تعديل العنصر القماشي" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "المرتكزات Ùقط" @@ -6396,7 +6427,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6477,8 +6508,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "صورة Ù…ØªØØ±ÙƒØ©" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "صورة Ù…ØªØØ±ÙƒØ©" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6489,8 +6526,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "إسم Ø§Ù„ØØ±ÙƒØ©:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7270,6 +7308,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7284,6 +7354,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7614,7 +7697,7 @@ msgstr "" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "General" -msgstr "عام" +msgstr "بشكل عام" #: editor/project_settings_editor.cpp msgid "Override For..." @@ -7972,6 +8055,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8783,10 +8878,6 @@ msgid "Build Project" msgstr "بناء المشروع" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "إظهار Ø§Ù„Ù…Ù„ÙØ§Øª" @@ -9179,6 +9270,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "إسم صن٠غير صالØ" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "ØØ¬Ù… الخط غير صالØ" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "تشغيل ÙÙŠ Ø§Ù„Ù…ØªØµÙØ" @@ -9211,6 +9385,54 @@ msgstr "لا يمكن قراءة مل٠الإقلاع الصوري:" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "اسم غير صالØ." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "اسم غير صالØ." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "مسار غير صالØ." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "اسم غير صالØ." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9296,6 +9518,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9451,6 +9680,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9465,13 +9701,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9569,10 +9801,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "أض٠اللون Ø§Ù„ØØ§Ù„ÙŠ كإعداد مسبق" @@ -9659,6 +9899,16 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Font Size:" +#~ msgstr "ØØ¬Ù… الخطوط:" + +#~ msgid "Line:" +#~ msgstr "الخط:" + +#~ msgid "Col:" +#~ msgstr "العمود:" + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "التØÙ…يل التلقائي '%s' موجود اصلا!" @@ -9667,10 +9917,6 @@ msgstr "" #~ msgstr "Ø¥Ø¶Ø§ÙØ© نقطة" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "مسار غير صالØ." - -#, fuzzy #~ msgid "Remove Split" #~ msgstr "Ù…Ø³Ø Ø§Ù„Ù†Ù‚Ø·Ø©" diff --git a/editor/translations/bg.po b/editor/translations/bg.po index 9c1f8d5c5d..a29d4f2a32 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -552,22 +552,13 @@ msgstr "Отдалечи" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "ПредупреждениÑ:" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Изглед Отпред." - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Ред:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Колона:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -863,8 +854,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Изтрий" @@ -1283,9 +1274,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3287,6 +3294,19 @@ msgstr "" msgid "Reimport" msgstr "Повторно внаÑÑне" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp #, fuzzy msgid "Failed to load resource." @@ -4265,6 +4285,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6284,7 +6314,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6363,8 +6393,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Ðнимационни ИнÑтрументи" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Ðово Име на ÐнимациÑ:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6375,8 +6411,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Ðово Име на ÐнимациÑ:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7158,6 +7195,38 @@ msgid "Browse" msgstr "Разглеждане" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7172,6 +7241,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7865,6 +7947,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8695,10 +8789,6 @@ msgid "Build Project" msgstr "Проект" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Преглед на файловете" @@ -9094,6 +9184,88 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "невалидно име на Група." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9131,6 +9303,53 @@ msgstr "ÐеуÑпешно Ñъздаване на папка." msgid "Using default boot splash image." msgstr "ÐеуÑпешно Ñъздаване на папка." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "невалидно име на Група." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Име:" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "невалидно име на Група." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9234,6 +9453,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "ParallaxLayer работи Ñамо когато е наÑледник на ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9391,6 +9617,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9406,14 +9639,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow2D работи Ñамо когато е наÑледник на Path2D." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D работи Ñамо когато е наÑледник на Path2D." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9509,10 +9737,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9596,6 +9832,23 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Warnings:" +#~ msgstr "ПредупреждениÑ:" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Изглед Отпред." + +#~ msgid "Line:" +#~ msgstr "Ред:" + +#~ msgid "Col:" +#~ msgstr "Колона:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "PathFollow2D работи Ñамо когато е наÑледник на Path2D." + #, fuzzy #~ msgid "Remove Split" #~ msgstr "ЗатварÑне на вÑичко" diff --git a/editor/translations/bn.po b/editor/translations/bn.po index 3165a8e85d..0dd1ea9ec6 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -570,23 +570,14 @@ msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)" msgid "Reset Zoom" msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¨/সংকোচন অপসারণ করà§à¦¨ (রিসেট জà§à¦®à§)" -#: editor/code_editor.cpp +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp #, fuzzy -msgid "Warnings:" +msgid "Warnings" msgstr "সতরà§à¦•তা" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "উৎস ফনà§à¦Ÿà§‡à¦° আকার:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "লাইন:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "কলাম:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -900,8 +891,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "অপসারণ করà§à¦¨" @@ -1332,9 +1323,30 @@ msgid "Storing File:" msgstr "সংরকà§à¦·à¦¿à¦¤ ফাইল:" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "" +"à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ à¦à¦° জনà§à¦¯ পà§à¦°à§Ÿà§‹à¦œà¦£à§€à§Ÿ টেমপà§à¦²à§‡à¦Ÿ পাওয়া যায়নি।\n" +"à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿ-সমূহ ডাউনলোড করে ইনà§à¦¸à¦Ÿà¦² করà§à¦¨à¥¤" + +#: editor/editor_export.cpp msgid "Packing" msgstr "পà§à¦¯à¦¾à¦•/গà§à¦šà§à¦›à¦¿à¦¤ করা" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ডিবাগ (debug) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ রিলিস (release) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।" + #: editor/editor_export.cpp platform/javascript/export/export.cpp #, fuzzy msgid "Template file not found:" @@ -3501,6 +3513,19 @@ msgstr "পà§à¦°à¦¿à¦¸à§‡à¦Ÿ..." msgid "Reimport" msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।" @@ -4510,6 +4535,16 @@ msgid "Move CanvasItem" msgstr "CanvasItem সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp #, fuzzy msgid "Anchors only" msgstr "অà§à¦¯à¦¾à¦‚কর" @@ -6643,7 +6678,7 @@ msgid "Post" msgstr "পরবরà§à¦¤à§€ (Post)" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6726,10 +6761,16 @@ msgid "(empty)" msgstr "(খালি/শূনà§à¦¯)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à¦¸à¦®à§‚হ" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "গতি (FPS):" @@ -6738,7 +6779,8 @@ msgid "Loop" msgstr "লà§à¦ª" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° ফà§à¦°à§‡à¦®à¦¸à¦®à§‚হ" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7565,6 +7607,38 @@ msgid "Browse" msgstr "বà§à¦°à¦¾à¦‰à¦¸" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "নামহীন পà§à¦°à¦•লà§à¦ª" @@ -7579,6 +7653,19 @@ msgstr "à¦à¦•ধিক পà§à¦°à¦•লà§à¦ª খোলায় আপনি সৠ#: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8307,6 +8394,18 @@ msgid "Duplicate Node(s)" msgstr "নোড(সমূহ) পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "নোড(সমূহ) অপসারণ করবেন?" @@ -9183,11 +9282,6 @@ msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª" #: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy -msgid "Warnings" -msgstr "সতরà§à¦•তা" - -#: modules/mono/editor/mono_bottom_panel.cpp -#, fuzzy msgid "View log" msgstr "ফাইল" @@ -9620,6 +9714,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "অগà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ কà§à¦²à¦¾à¦¸ নাম" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "নামটি কারà§à¦¯à¦•র সনাকà§à¦¤à¦•ারী নয়:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "নামটি কারà§à¦¯à¦•র সনাকà§à¦¤à¦•ারী নয়:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp #, fuzzy msgid "Run in Browser" @@ -9659,6 +9837,51 @@ msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:" msgid "Using default boot splash image." msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "à¦à¦•ক (অননà§à¦¯) নামটি অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "পণà§à¦¯à§‡à¦° অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "পà§à¦°à¦•াশকের অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "পটà¦à§‚মির (background) অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ রঙ।" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "সà§à¦Ÿà§‹à¦° লোগোর (Store Logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৫০x৫০ হতে হবে)।" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "৪৪x৪৪ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৪৪x৪৪ হতে হবে)।" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "à§à§§xà§à§§ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (à§à§§xà§à§§ হতে হবে)।" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "১৫০x১৫০ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (১৫০x১৫০ হতে হবে)।" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "৩১০x৩১০ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৩১০x৩১০ হতে হবে)।" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "৩১০x১৫০ পà§à¦°à¦¶à¦¸à§à¦¤ লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৩১০x১৫০ হতে হবে)।" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "সà§à¦ªà§à¦²à§à¦¯à¦¾à¦¶ পরà§à¦¦à¦¾à¦° (splash screen) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৬২০x৩০০ হতে হবে)।" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9759,6 +9982,13 @@ msgid "" msgstr "" "ParallaxLayer à¦à¦•মাতà§à¦° ParallaxBackground à¦à¦° অংশ হিসেবে নিরà§à¦§à¦¾à¦°à¦¨ করলেই কাজ করে।" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9932,6 +10162,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9947,14 +10184,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow2D à¦à¦•মাতà§à¦° Path2D à¦à¦° অংশ হিসেবে নিরà§à¦§à¦¾à¦°à¦¨ করালেই কাজ করে।" #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D à¦à¦•মাতà§à¦° Path2D à¦à¦° অংশ হিসেবে নিরà§à¦§à¦¾à¦°à¦¨ করালেই কাজ করে।" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -10057,11 +10289,19 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp #, fuzzy msgid "Raw Mode" msgstr "পà§à¦¯à¦¾à¦¨ মোড" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -10155,6 +10395,24 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Warnings:" +#~ msgstr "সতরà§à¦•তা" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "উৎস ফনà§à¦Ÿà§‡à¦° আকার:" + +#~ msgid "Line:" +#~ msgstr "লাইন:" + +#~ msgid "Col:" +#~ msgstr "কলাম:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "PathFollow2D à¦à¦•মাতà§à¦° Path2D à¦à¦° অংশ হিসেবে নিরà§à¦§à¦¾à¦°à¦¨ করালেই কাজ করে।" + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "'%s' অà§à¦¯à¦¾à¦•শন ইতিমধà§à¦¯à§‡à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨!" @@ -11384,53 +11642,6 @@ msgstr "" #~ msgid "Error creating the package signature." #~ msgstr "পà§à¦¯à¦¾à¦•েজের সà§à¦¬à¦¾à¦•à§à¦·à¦° (package signature) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।" -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ à¦à¦° জনà§à¦¯ পà§à¦°à§Ÿà§‹à¦œà¦£à§€à§Ÿ টেমপà§à¦²à§‡à¦Ÿ পাওয়া যায়নি।\n" -#~ "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿ-সমূহ ডাউনলোড করে ইনà§à¦¸à¦Ÿà¦² করà§à¦¨à¥¤" - -#~ msgid "Custom debug package not found." -#~ msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ডিবাগ (debug) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।" - -#~ msgid "Custom release package not found." -#~ msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ রিলিস (release) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।" - -#~ msgid "Invalid unique name." -#~ msgstr "à¦à¦•ক (অননà§à¦¯) নামটি অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤" - -#~ msgid "Invalid product GUID." -#~ msgstr "পণà§à¦¯à§‡à¦° অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।" - -#~ msgid "Invalid publisher GUID." -#~ msgstr "পà§à¦°à¦•াশকের অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।" - -#~ msgid "Invalid background color." -#~ msgstr "পটà¦à§‚মির (background) অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ রঙ।" - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "সà§à¦Ÿà§‹à¦° লোগোর (Store Logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৫০x৫০ হতে হবে)।" - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "৪৪x৪৪ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৪৪x৪৪ হতে হবে)।" - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "à§à§§xà§à§§ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (à§à§§xà§à§§ হতে হবে)।" - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "১৫০x১৫০ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (১৫০x১৫০ হতে হবে)।" - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "৩১০x৩১০ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৩১০x৩১০ হতে হবে)।" - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "৩১০x১৫০ পà§à¦°à¦¶à¦¸à§à¦¤ লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৩১০x১৫০ হতে হবে)।" - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "সà§à¦ªà§à¦²à§à¦¯à¦¾à¦¶ পরà§à¦¦à¦¾à¦° (splash screen) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৬২০x৩০০ হতে হবে)।" - #, fuzzy #~ msgid "RAW Mode" #~ msgstr "চালানোর মোড:" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index e859a7e9cc..afe86eb47c 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -547,22 +547,13 @@ msgstr "Allunya" msgid "Reset Zoom" msgstr "Reinicia el Zoom" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Avisos:" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Mida de la lletra:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "LÃnia:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Avisos" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Col:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -866,8 +857,8 @@ msgstr "Voleu Esborrar els fitxers seleccionats?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Esborra" @@ -1295,9 +1286,30 @@ msgid "Storing File:" msgstr "Emmagatzemant Fitxer:" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "" +"No s'ha trobat cap plantilla.\n" +"Descarregueu i instal·leu alguna plantilla d'exportació." + +#: editor/editor_export.cpp msgid "Packing" msgstr "Compressió" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "No s'ha trobat cap paquet de depuració personalitzat." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "No s'ha trobat cap paquet de llançament personalitzat." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "No s'ha trobat la Plantilla:" @@ -3331,6 +3343,20 @@ msgstr "Configuració..." msgid "Reimport" msgstr "ReImportar" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +#, fuzzy +msgid "Changing the type of an imported file requires editor restart." +msgstr "Canviar el controlador de vÃdeo requereix reiniciar l'editor." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "No s'ha pogut carregar el recurs." @@ -4321,6 +4347,16 @@ msgid "Move CanvasItem" msgstr "Modifica el elementCanvas" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Només Ancoratges" @@ -6379,7 +6415,7 @@ msgid "Post" msgstr "Post" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6461,10 +6497,16 @@ msgid "(empty)" msgstr "(buit)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animacions" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animació" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Velocitat (FPS):" @@ -6473,7 +6515,8 @@ msgid "Loop" msgstr "Bucle" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Fotogrames d'Animació" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7269,6 +7312,38 @@ msgid "Browse" msgstr "Navega" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projecte sense nom" @@ -7283,6 +7358,19 @@ msgstr "Esteu segur que voleu obrir més d'un projecte de cop?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7998,6 +8086,18 @@ msgid "Duplicate Node(s)" msgstr "Duplica els Nodes" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Elimina els Nodes?" @@ -8829,10 +8929,6 @@ msgid "Build Project" msgstr "Munta el Projecte" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Avisos" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Mostra el Registre" @@ -9239,6 +9335,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "El Nom de Classe no és và lid" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "El nom no és un identificador và lid:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "El nom no és un identificador và lid:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Executa-ho en el Navegador" @@ -9271,6 +9451,55 @@ msgstr "No es pot llegir la imatge de presentació:" msgid "Using default boot splash image." msgstr "Utilitzant la imatge de presentació per defecte." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Nom no và lid." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "La mida de la lletra no és và lida." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "GUID d'editor no và lid." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Lletra personalitzada no và lida." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Imatge Store Logo no và lida. La mida hauria de ser 50x50 ." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "Imatge Logo quadrat 44x44 no và lida. La mida hauria de ser 44x44." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "Imatge Logo quadrat 71x71 no và lida. La mida hauria de ser 71x71 ." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "Imatge logo quadrat 150x150 no và lida. La mida hauria de ser 150x150 ." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "Imatge logo quadrat 310x310 no và lida. La mida hauria de ser 310x310." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "Imatge logo quadrat 310x150 no và lida. La mida hauria de ser 310x150." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" +"Imatge de la pantalla de presentació no và lida. La mida hauria de ser " +"620x300." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9381,6 +9610,13 @@ msgstr "" "Un node ParallaxLayer només funciona quan s'estableix com a fill d'un node " "ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9564,6 +9800,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "Res és visible perquè no s'ha assignat cap Malla a cap pas de Dibuix." @@ -9580,15 +9823,9 @@ msgstr "" "PathFollow2D només funciona si s'estableix com a fill d'un node Path2D." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D només funciona si s'estableix com a fill d'un node Path2D." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9703,10 +9940,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Mode Cru" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Afegeix el Color actual com a predeterminat" @@ -9804,6 +10049,24 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Warnings:" +#~ msgstr "Avisos:" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Mida de la lletra:" + +#~ msgid "Line:" +#~ msgstr "LÃnia:" + +#~ msgid "Col:" +#~ msgstr "Col:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D només funciona si s'estableix com a fill d'un node Path2D." + #, fuzzy #~ msgid "Split already exists." #~ msgstr "L'Acció '%s' ja existeix!" @@ -10788,60 +11051,6 @@ msgstr "" #~ msgid "Error creating the package signature." #~ msgstr "No s'ha pogut crear el paquet signatura." -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "No s'ha trobat cap plantilla.\n" -#~ "Descarregueu i instal·leu alguna plantilla d'exportació." - -#~ msgid "Custom debug package not found." -#~ msgstr "No s'ha trobat cap paquet de depuració personalitzat." - -#~ msgid "Custom release package not found." -#~ msgstr "No s'ha trobat cap paquet de llançament personalitzat." - -#, fuzzy -#~ msgid "Invalid unique name." -#~ msgstr "Nom no và lid." - -#, fuzzy -#~ msgid "Invalid product GUID." -#~ msgstr "La mida de la lletra no és và lida." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "GUID d'editor no và lid." - -#, fuzzy -#~ msgid "Invalid background color." -#~ msgstr "Lletra personalitzada no và lida." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "Imatge Store Logo no và lida. La mida hauria de ser 50x50 ." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "Imatge Logo quadrat 44x44 no và lida. La mida hauria de ser 44x44." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "Imatge Logo quadrat 71x71 no và lida. La mida hauria de ser 71x71 ." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "" -#~ "Imatge logo quadrat 150x150 no và lida. La mida hauria de ser 150x150 ." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "" -#~ "Imatge logo quadrat 310x310 no và lida. La mida hauria de ser 310x310." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "" -#~ "Imatge logo quadrat 310x150 no và lida. La mida hauria de ser 310x150." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "Imatge de la pantalla de presentació no và lida. La mida hauria de ser " -#~ "620x300." - #~ msgid "Node From Scene" #~ msgstr "Node de l'Escena" diff --git a/editor/translations/cs.po b/editor/translations/cs.po index a83e18644d..40308bf109 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -5,7 +5,7 @@ # Fadex <vitekpaulik@gmail.com>, 2017. # Jan 'spl!te' KondelÃk <j.kondelik@centrum.cz>, 2016, 2018. # Jiri Hysek <contact@jirihysek.com>, 2017. -# Josef KuchaÅ™ <josef.kuchar267@gmail.com>, 2018. +# Josef KuchaÅ™ <josef.kuchar267@gmail.com>, 2018, 2019. # LudÄ›k Novotný <gladosicek@gmail.com>, 2016, 2018. # Martin Novák <maidx@seznam.cz>, 2017. # zxey <r.hozak@seznam.cz>, 2018. @@ -14,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:38+0100\n" -"Last-Translator: VojtÄ›ch Å amla <auzkok@seznam.cz>\n" +"PO-Revision-Date: 2019-02-10 12:01+0000\n" +"Last-Translator: Josef KuchaÅ™ <josef.kuchar267@gmail.com>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/" "cs/>\n" "Language: cs\n" @@ -23,7 +23,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Poedit 2.2\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -39,7 +39,7 @@ msgstr "Nedostatek bytů pro dekódovánà bytů, nebo Å¡patný formát." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "" +msgstr "Neplatný vstup %i (neproÅ¡el) ve výrazu" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -73,7 +73,7 @@ msgstr "Uvolnit" #: editor/animation_bezier_editor.cpp msgid "Balanced" -msgstr "" +msgstr "Vyvážený" #: editor/animation_bezier_editor.cpp #, fuzzy @@ -304,7 +304,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "Stopa animae může odkazovat pouze na uzly AnimationPlayer." +msgstr "Stopa animace může odkazovat pouze na uzly AnimationPlayer." #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." @@ -550,22 +550,13 @@ msgstr "Oddálit" msgid "Reset Zoom" msgstr "Obnovit původnà pÅ™iblÞenÃ" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "VarovánÃ:" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Pohled zepÅ™edu" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Řádek:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "VarovánÃ" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Sloupec:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -869,8 +860,8 @@ msgstr "Odstranit vybrané soubory?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Odstranit" @@ -1294,9 +1285,30 @@ msgid "Storing File:" msgstr "Ukládám soubor:" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "" +"Nebyly nalezeny žádné exportnà šablony.\n" +"StáhnÄ›te a nainstalujte exportnà šablony." + +#: editor/editor_export.cpp msgid "Packing" msgstr "BalÃm" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Vlastnà ladÃcà balÃÄek nebyl nalezen." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "Vlastnà balÃÄek k uveÅ™ejnÄ›nà nebyl nalezen." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Soubor Å¡ablony nenalezen:" @@ -1436,7 +1448,7 @@ msgstr "(Re)Importovánà assetů" #: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp msgid "Top" -msgstr "" +msgstr "HornÃ" #: editor/editor_help.cpp msgid "Class:" @@ -1608,7 +1620,7 @@ msgstr "Nastavit" #: editor/editor_inspector.cpp msgid "Set Multiple:" -msgstr "" +msgstr "Nastavit vÃce:" #: editor/editor_log.cpp msgid "Output:" @@ -3287,6 +3299,20 @@ msgstr "PÅ™edvolba..." msgid "Reimport" msgstr "Znovu importovat" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +#, fuzzy +msgid "Changing the type of an imported file requires editor restart." +msgstr "ZmÄ›na grafického ovladaÄe vyžaduje restart editoru." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Selhalo nahránà zdroje." @@ -4242,6 +4268,16 @@ msgid "Move CanvasItem" msgstr "PÅ™emÃstit CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Pouze kotvy" @@ -6264,7 +6300,7 @@ msgid "Post" msgstr "Po" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6340,7 +6376,13 @@ msgid "(empty)" msgstr "(prázdný)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "Animace" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" msgstr "Animace" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6352,7 +6394,8 @@ msgid "Loop" msgstr "SmyÄka" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "SnÃmky animace" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7125,6 +7168,38 @@ msgid "Browse" msgstr "Procházet" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Nepojmenovaný projekt" @@ -7139,6 +7214,19 @@ msgstr "Jste si jisti, že chcete otevÅ™it vÃce než jeden projekt?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7837,6 +7925,18 @@ msgid "Duplicate Node(s)" msgstr "Duplikovat uzel/uzly" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Odstranit uzel/uzly?" @@ -8648,10 +8748,6 @@ msgid "Build Project" msgstr "Sestavit projekt" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "VarovánÃ" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Zobrazit soubory" @@ -9059,6 +9155,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Neplatné jméno tÅ™Ãdy" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Jméno nenà platný identifikátor:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Jméno nenà platný identifikátor:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Spustit v prohlÞeÄi" @@ -9094,6 +9274,51 @@ msgstr "Nelze vytvoÅ™it složku." msgid "Using default boot splash image." msgstr "Nelze vytvoÅ™it složku." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Neplatný unikátnà název." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "Neplatné GUID produktu." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "Neplatné GUID vydavatele." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Neplatná barva pozadÃ." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Neplatné rozmÄ›ry Store Logo obrázku (mÄ›ly by být 50x50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "Neplatné rozmÄ›ry Square 44x44 Logo obrázku (mÄ›ly by být 44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "Neplatné rozmÄ›ry Square 71x71 Logo obrázku (mÄ›ly by být 71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "Neplatné rozmÄ›ry Square 150x150 Logo obrázku (mÄ›ly by být 150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "Neplatné rozmÄ›ry Square 310x310 Logo obrázku (mÄ›ly by být 310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "Neplatné rozmÄ›ry Square 310x150 Logo obrázku (mÄ›ly by být 310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Neplatné rozmÄ›ry obrázku uvÃtacà obrazovky (mÄ›ly by být 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9199,6 +9424,13 @@ msgid "" msgstr "" "Uzel ParallaxLayer funguje pouze když je dÃtÄ›tem uzlu ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9373,6 +9605,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9387,13 +9626,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow funguje pouze, když je dÃtÄ›tem uzlu Path." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "OrientedPathFollow funguje pouze když je dÃtÄ›tem uzlu Path." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9500,10 +9735,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "RAW mód" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "PÅ™idat aktuálnà barvu jako pÅ™edvolbu" @@ -9597,6 +9840,22 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Warnings:" +#~ msgstr "VarovánÃ:" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Pohled zepÅ™edu" + +#~ msgid "Line:" +#~ msgstr "Řádek:" + +#~ msgid "Col:" +#~ msgstr "Sloupec:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "OrientedPathFollow funguje pouze když je dÃtÄ›tem uzlu Path." + #, fuzzy #~ msgid "Split already exists." #~ msgstr "Akce '%s' již existuje!" @@ -10074,54 +10333,6 @@ msgstr "" #~ msgid "Error creating the package signature." #~ msgstr "Chyba pÅ™i vytvářenà podpisu balÃÄku." -#, fuzzy -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "Nebyly nalezeny žádné exportnà šablony.\n" -#~ "StáhnÄ›te a nainstalujte exportnà šablony." - -#~ msgid "Custom debug package not found." -#~ msgstr "Vlastnà ladÃcà balÃÄek nebyl nalezen." - -#, fuzzy -#~ msgid "Custom release package not found." -#~ msgstr "Vlastnà balÃÄek k uveÅ™ejnÄ›nà nebyl nalezen." - -#~ msgid "Invalid unique name." -#~ msgstr "Neplatný unikátnà název." - -#~ msgid "Invalid product GUID." -#~ msgstr "Neplatné GUID produktu." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "Neplatné GUID vydavatele." - -#~ msgid "Invalid background color." -#~ msgstr "Neplatná barva pozadÃ." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "Neplatné rozmÄ›ry Store Logo obrázku (mÄ›ly by být 50x50)." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "Neplatné rozmÄ›ry Square 44x44 Logo obrázku (mÄ›ly by být 44x44)." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "Neplatné rozmÄ›ry Square 71x71 Logo obrázku (mÄ›ly by být 71x71)." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "Neplatné rozmÄ›ry Square 150x150 Logo obrázku (mÄ›ly by být 150x150)." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "Neplatné rozmÄ›ry Square 310x310 Logo obrázku (mÄ›ly by být 310x310)." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "Neplatné rozmÄ›ry Square 310x150 Logo obrázku (mÄ›ly by být 310x150)." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "Neplatné rozmÄ›ry obrázku uvÃtacà obrazovky (mÄ›ly by být 620x300)." - #~ msgid "Path property must point to a valid Particles2D node to work." #~ msgstr "" #~ "Aby ParticleAttractor2D fungoval, musà vlastnost path ukazovat na platný " diff --git a/editor/translations/da.po b/editor/translations/da.po index ed2e8b584c..b5cda124b7 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -548,21 +548,13 @@ msgstr "Zoom Ud" msgid "Reset Zoom" msgstr "Nulstil Zoom" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Advarsler:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Skrifttype Størrelse:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Linje:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Kol:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -864,8 +856,8 @@ msgstr "Slet markerede filer?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Slet" @@ -1291,9 +1283,26 @@ msgid "Storing File:" msgstr "Lagrings Fil:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Pakker" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Skabelonfil ikke fundet:" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Skabelonfil ikke fundet:" @@ -3321,6 +3330,19 @@ msgstr "Forudindstillet..." msgid "Reimport" msgstr "Genimporter" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Fejler med at indlæse ressource." @@ -4299,6 +4321,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6339,7 +6371,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6419,8 +6451,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Tilføj animation" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Ny Animation Navn:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6431,8 +6469,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Ny Animation Navn:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7207,6 +7246,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7221,6 +7292,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7916,6 +8000,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8728,10 +8824,6 @@ msgid "Build Project" msgstr "Projekt" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Vis filer" @@ -9135,6 +9227,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Ugyldigt navn." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Navnet er ikke et gyldigt id:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Navnet er ikke et gyldigt id:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9173,6 +9349,54 @@ msgstr "Kan ikke læse boot splash billed fil:\n" msgid "Using default boot splash image." msgstr "Kan ikke læse boot splash billed fil:\n" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Ugyldigt index egenskabsnavn." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Ugyldig skriftstørrelse." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Ugyldig skriftstørrelse." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Ugyldigt navn." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9275,6 +9499,13 @@ msgstr "" "ParallaxLayer node virker kun, nÃ¥r den angives som barn af en " "ParallaxBackground node." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9445,6 +9676,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9461,15 +9699,9 @@ msgstr "" "PathFollow2D virker kun, nÃ¥r den angives som et barn af en Path2D node." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D virker kun, nÃ¥r den angives som et barn af en Path2D node." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9571,10 +9803,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9666,6 +9906,23 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Warnings:" +#~ msgstr "Advarsler:" + +#~ msgid "Font Size:" +#~ msgstr "Skrifttype Størrelse:" + +#~ msgid "Line:" +#~ msgstr "Linje:" + +#~ msgid "Col:" +#~ msgstr "Kol:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D virker kun, nÃ¥r den angives som et barn af en Path2D node." + #, fuzzy #~ msgid "Split already exists." #~ msgstr "Autoload '%s' eksisterer allerede!" @@ -9969,14 +10226,6 @@ msgstr "" #~ msgid "Ctrl+" #~ msgstr "CTRL +" -#, fuzzy -#~ msgid "Invalid unique name." -#~ msgstr "Ugyldigt index egenskabsnavn." - -#, fuzzy -#~ msgid "Invalid product GUID." -#~ msgstr "Ugyldig skriftstørrelse." - #~ msgid "Path property must point to a valid Particles2D node to work." #~ msgstr "" #~ "Egenskaben Path skal pege pÃ¥ en gyldig Particles2D node for at virke." diff --git a/editor/translations/de.po b/editor/translations/de.po index dabd25d797..8f6902a3f3 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -36,12 +36,13 @@ # asyncial <mahlburg@posteo.de>, 2018. # ssantos <ssantos@web.de>, 2018. # Rémi Verschelde <akien@godotengine.org>, 2019. +# Martin <martinreininger@gmx.net>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:07+0000\n" -"Last-Translator: Rémi Verschelde <akien@godotengine.org>\n" +"PO-Revision-Date: 2019-02-10 12:01+0000\n" +"Last-Translator: Martin <martinreininger@gmx.net>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" "Language: de\n" @@ -49,7 +50,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -576,21 +577,13 @@ msgstr "Verkleinern" msgid "Reset Zoom" msgstr "Vergrößerung zurücksetzen" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Warnungen:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Schriftgröße:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Zeile:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Warnungen" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Spalte:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -895,8 +888,8 @@ msgstr "Ausgewählte Dateien löschen?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Löschen" @@ -1007,7 +1000,7 @@ msgstr "Inhalte werden entpackt" #: editor/editor_asset_installer.cpp editor/project_manager.cpp msgid "Package installed successfully!" -msgstr "Paket erfolgreich installiert!" +msgstr "Paket wurde erfolgreich installiert!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -1324,9 +1317,25 @@ msgid "Storing File:" msgstr "Speichere Datei:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "Keine Exportvorlagen am erwarteten Pfad gefunden:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Packe" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "Selbst konfigurierte Debug-Exportvorlage nicht gefunden." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "Selbst konfigurierte Release-Exportvorlage nicht gefunden." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Vorlagendatei nicht gefunden:" @@ -2632,12 +2641,11 @@ msgstr "[leer]" #: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp msgid "Assign..." -msgstr "Zuweisen.." +msgstr "Zuweisen..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "Ungültiger Pfad" +msgstr "Ungültige RID" #: editor/editor_properties.cpp msgid "" @@ -3351,6 +3359,23 @@ msgstr "Voreinstellungen..." msgid "Reimport" msgstr "Neuimport" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "Szenen speichern, reimportieren und neu starten" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" +"Den Typ einer importierten Datei zu ändern erfordert einen Neustart des " +"Editors." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"ACHTUNG: Es existieren Inhalte die diese Ressource nutzen und nachher " +"möglicherweise nicht mehr ordnungsgemäß laden können." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Laden der Ressource gescheitert." @@ -4313,6 +4338,19 @@ msgid "Move CanvasItem" msgstr "CanvasItem verschieben" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"Warnung: Position und Größe der Kinder eines Containers werden nur von ihren " +"Eltern bestimmt." + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "nur Anker" @@ -5229,28 +5267,24 @@ msgid "Create Polygon & UV" msgstr "Polygon und UV erstellen" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Neue horizontale Hilfslinie erstellen" +msgstr "Internen Vertex erstellen" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "Eingangskontrollpunkt löschen" +msgstr "Internen Vertex entfernen" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "Ungültiges Polygon (3 verschiedene Vertices werden benötigt)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Polygon bearbeiten" +msgstr "Selbst-erstelltes Polygon hinzufügen" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Kollisionspolygon entfernen" +msgstr "Selbst-erstelltes Polygon entfernen" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5277,14 +5311,12 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Punkt" +msgstr "Punkte" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "Polygon→UV" +msgstr "Polygone" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -5320,13 +5352,15 @@ msgstr "Polygon skalieren" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." -msgstr "" +msgstr "Eigenes Polygon erstellen. Aktiviert Eigen-Polygon-Rendern." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"Eigenes Polygon entfernen. Sollten kein eigenes Polygon übrig bleiben, wird " +"Eigen-Polygon-Rendern deaktiviert." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -6320,7 +6354,8 @@ msgid "Post" msgstr "Nachher" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +#, fuzzy +msgid "Nameless gizmo" msgstr "Namenloser Anfasser" #: editor/plugins/sprite_editor_plugin.cpp @@ -6398,10 +6433,16 @@ msgid "(empty)" msgstr "(leer)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animationen" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animation" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Geschwindigkeit (FPS):" @@ -6410,7 +6451,8 @@ msgid "Loop" msgstr "Wiederholung" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Animationsframes" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6738,7 +6780,7 @@ msgstr "Keine Textur zum Entfernen ausgewählt." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." -msgstr "Aus Szene erstellen? Alle gegenwärtigen Kacheln werden überschrieben." +msgstr "Aus Szene erstellen? Alle aktuellen Kacheln werden überschrieben!" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" @@ -6824,7 +6866,7 @@ msgstr "Kachel erstellen" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "Kachel-Icon setzen" +msgstr "Kachel Icon zuweisen" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Bitmask" @@ -6848,7 +6890,7 @@ msgstr "Kachel-Bitmaske einfügen" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "Kachel-Bitmaske leeren" +msgstr "Kachel Bitmaske löschen" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Remove Tile" @@ -7163,7 +7205,49 @@ msgstr "Projektinstallationspfad:" #: editor/project_manager.cpp msgid "Browse" -msgstr "Durchstöbern" +msgstr "Durchsuchen" + +#: editor/project_manager.cpp +msgid "Renderer:" +msgstr "Renderer:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"Höhere Grafikqualität\n" +"Alle Funktionen verfügbar\n" +"Inkompatibel mit älterer Hardware\n" +"Nicht empfohlen für Webanwendungen" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 2.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"Geringere Grafikqualität\n" +"Einige Funktionen sind nicht vorhanden\n" +"Läuft auf fast jeder Hardware\n" +"Empfohlen für Webanwendungen" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" +"Der Renderer kann auch später noch ausgetauscht werden, allerdings kann es " +"sein, dass dann manche Szenen angepasst werden müssen." #: editor/project_manager.cpp msgid "Unnamed Project" @@ -7178,6 +7262,28 @@ msgid "Are you sure to open more than one project?" msgstr "Sollen wirklich mehrere Projekte geöffnet werden?" #: editor/project_manager.cpp +#, fuzzy +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"Die Projekteinstellungsdatei ist mit einer älteren Version erstellt worden " +"und muss in die folgende Version konvertiert werden:\n" +"\n" +"%s\n" +"\n" +"Möchten Sie die Konvertierung durchführen?\n" +"Warnung: Das Projekt kann nach der Konvertierung nicht mehr mit einer " +"älteren Version geöffnet werden." + +#: editor/project_manager.cpp msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -7188,14 +7294,14 @@ msgid "" "Warning: You will not be able to open the project with previous versions of " "the engine anymore." msgstr "" -"Die folgende Projekteinstellungsdatei wurde mit einer älteren Godot-Version " -"erzeugt und muss für die gegenwärtige Version angepasst werden:\n" +"Die Projekteinstellungsdatei ist mit einer älteren Version erstellt worden " +"und muss in die folgende Version konvertiert werden:\n" "\n" "%s\n" "\n" -"Sollen die Anpassungen vorgenommen werden?\n" -"Achtung: Das Projekt kann nach der Anpassung nicht mehr mit einer älteren " -"Godot-Version geöffnet werden." +"Möchten Sie die Konvertierung durchführen?\n" +"Warnung: Das Projekt kann nach der Konvertierung nicht mehr mit einer " +"älteren Version geöffnet werden." #: editor/project_manager.cpp msgid "" @@ -7894,6 +8000,19 @@ msgid "Duplicate Node(s)" msgstr "Dupliziere Node(s)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" +"Nodes in geerbtet Szenen können nicht umgehängt oder umgeordnet werden." + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "Node muss zur bearbeiteten Szene gehören um ihre Wurzel zu werden." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "Instantiierte Szenen können keine Wurzel werden" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Node(s) wirklich löschen?" @@ -8701,10 +8820,6 @@ msgid "Build Project" msgstr "Projekt bauen" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Warnungen" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Log anschauen" @@ -9109,6 +9224,94 @@ msgstr "%s abrufen" msgid "Set %s" msgstr "%s setzen" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "Paketname fehlt." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "Paketsegmente dürfen keine Länge gleich Null haben." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "Das Zeichen ‚%s‘ ist in Android-Anwendungs-Paketnamen nicht gestattet." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "Eine Ziffer kann nicht das erste Zeichen eines Paketsegments sein." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" +"Das Zeichen ‚%s‘ kann nicht das erste Zeichen in einem Paketsegment sein." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "Das Paket muss mindestens einen Punkt-Unterteiler ‚.‘ haben." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "Das ADB-Programm wurde nicht in den Editoreinstellungen konfiguriert." + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "OpenJDK-Jarsigner wurde nicht in den Editoreinstellungen konfiguriert." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" +"Debug-Keystore wurde weder in den Editoreinstellungen noch in der Vorlage " +"konfiguriert." + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "Ungültiger öffentlicher Schlüssel für APK-Erweiterung." + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "Ungültiger Paketname:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "Bezeichner fehlt." + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "Bezeichnersegmente dürfen keine Länge gleich Null haben." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "Das Zeichen ‚%s‘ ist in Bezeichnern nicht gestattet." + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" +"Eine Ziffer kann nicht das erste Zeichen eines Bezeichnersegments sein." + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" +"Das Zeichen ‚%s‘ kann nicht das erste Zeichen in einem Bezeichnersegment " +"sein." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "Der Bezeichner muss mindestens einen Punkt-Unterteiler ‚.‘ haben." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" +"App-Store-Team-ID nicht festgelegt – Projekt kann nicht konfiguriert werden." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "Ungültiger Bezeichner:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "Benötigtes Icon wurde nicht in der Vorlage festgelegt." + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Im Browser ausführen" @@ -9141,6 +9344,50 @@ msgstr "Konnte Bilddatei des Startbildschirms nicht lesen:" msgid "Using default boot splash image." msgstr "Verwende Standard-Startbildschirm-Bilddatei." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "Ungültiger paket-einzigartiger Name." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "Ungültige Produkt-GUID." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "Ungültige Verleger-GUID." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Ungültige Hintergrundfarbe." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Ungültige Abmessungen des Store-Logos (sollte 50x50 sein)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "Ungültige Abmessungen für 44x44-Quadratlogo (sollte 44x44 sein)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "Ungültige Abmessungen für 71x71-Quadratlogo (sollte 71x71 sein)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "Ungültige Abmessungen für 150x150-Quadratlogo (sollte 150x150 sein)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "Ungültige Abmessungen für 310x310-Quadratlogo (sollte 310x310 sein)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "Ungültige Abmessungen für 310x150-Breitlogo (sollte 310x150 sein)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Ungültige Abmessungen für Startbildschirm (sollte 620x300 sein)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9256,6 +9503,13 @@ msgstr "" "Das ParallaxLayer-Node lässt sich nur als Unterobjekt eines " "ParallaxBackground-Node verwenden." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9451,6 +9705,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "Nichts ist sichtbar da keine Meshe den Zeichendurchläufen zugewiesen wurden." @@ -9470,18 +9731,12 @@ msgstr "" "gesetzt wird." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"OrientedPathFollow funktioniert nur, wenn es als Unterobjekt eines Path-" -"Nodes gesetzt wird." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" -"OrientedPathFollow erfordert die Aktivierung von \"Up Vector\" in der Curve-" -"Ressource des übergeordneten Pfades." +"PathFollow ROTATION_ORIENTED erfordert die Aktivierung von „Up Vector“ in " +"der Curve-Ressource des übergeordneten Pfades." #: scene/3d/physics_body.cpp msgid "" @@ -9597,10 +9852,18 @@ msgstr "" "AnimationTree." #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Rohdatenmodus" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Füge aktuelle Farbe als Vorlage hinzu" @@ -9700,6 +9963,23 @@ msgstr "Zuweisung an Uniform." msgid "Varyings can only be assigned in vertex function." msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." +#~ msgid "Warnings:" +#~ msgstr "Warnungen:" + +#~ msgid "Font Size:" +#~ msgstr "Schriftgröße:" + +#~ msgid "Line:" +#~ msgstr "Zeile:" + +#~ msgid "Col:" +#~ msgstr "Spalte:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "OrientedPathFollow funktioniert nur, wenn es als Unterobjekt eines Path-" +#~ "Nodes gesetzt wird." + #~ msgid "Split point with itself." #~ msgstr "Teile Punkt mit sich selbst." @@ -10940,55 +11220,6 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." #~ msgid "Error creating the package signature." #~ msgstr "Fehler beim erstellen der Paketsignatur." -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "Keine Exportvorlagen gefunden.\n" -#~ "Laden Sie Exportvorlagen ggf. von der offiziellen Webseite herunter und " -#~ "installieren Sie diese." - -#~ msgid "Custom debug package not found." -#~ msgstr "Selbst konfiguriertes Debug-Paket nicht gefunden." - -#~ msgid "Custom release package not found." -#~ msgstr "Selbst konfiguriertes Release-Paket nicht gefunden." - -#~ msgid "Invalid unique name." -#~ msgstr "Ungültiger einzigartiger Name." - -#~ msgid "Invalid product GUID." -#~ msgstr "Ungültige Produkt-GUID." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "Ungültige Verleger-GUID." - -#~ msgid "Invalid background color." -#~ msgstr "Ungültige Hintergrundfarbe." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "Ungültige Abmessungen des Store-Logos (sollte 50x50 sein)." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "Ungültige Abmessungen für 44x44-Quadratlogo (sollte 44x44 sein)." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "Ungültige Abmessungen für 71x71-Quadratlogo (sollte 71x71 sein)." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "" -#~ "Ungültige Abmessungen für 150x150-Quadratlogo (sollte 150x150 sein)." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "" -#~ "Ungültige Abmessungen für 310x310-Quadratlogo (sollte 310x310 sein)." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "Ungültige Abmessungen für 310x150-Breitlogo (sollte 310x150 sein)." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "Ungültige Abmessungen für Startbildschirm (sollte 620x300 sein)." - #, fuzzy #~ msgid "RAW Mode" #~ msgstr "Roh-Modus" diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po index e8977232da..d7c563d6e8 100644 --- a/editor/translations/de_CH.po +++ b/editor/translations/de_CH.po @@ -549,20 +549,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -863,8 +855,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1289,9 +1281,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3276,6 +3284,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4253,6 +4274,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6286,7 +6317,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6365,8 +6396,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Animations-Node" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Bild einfügen" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6377,8 +6414,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Animations-Node" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7160,6 +7198,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7174,6 +7244,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7868,6 +7951,18 @@ msgid "Duplicate Node(s)" msgstr "Node(s) duplizieren" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Node(s) löschen?" @@ -8679,10 +8774,6 @@ msgid "Build Project" msgstr "Projektname:" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Datei(en) öffnen" @@ -9096,6 +9187,88 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Projektname:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9129,6 +9302,53 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Projektname:" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Projektname:" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Projektname:" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9224,6 +9444,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9386,6 +9613,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9403,16 +9637,9 @@ msgstr "" "gesetzt wird." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D funktioniert nur, wenn sie als Unterobjekt eines Path2D Nodes " -"gesetzt wird." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9507,11 +9734,19 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp #, fuzzy msgid "Raw Mode" msgstr "Node erstellen" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9597,6 +9832,12 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D funktioniert nur, wenn sie als Unterobjekt eines Path2D " +#~ "Nodes gesetzt wird." + +#, fuzzy #~ msgid "Add Split" #~ msgstr "Script hinzufügen" diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index 345c7dcc26..f2214ab3c8 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -526,20 +526,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -833,8 +825,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1251,9 +1243,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3171,6 +3179,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4107,6 +4128,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6083,7 +6114,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6159,7 +6190,11 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +msgid "Animations:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6171,7 +6206,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6902,6 +6937,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6915,6 +6982,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7593,6 +7673,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8379,10 +8471,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8770,6 +8858,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8802,6 +8971,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8883,6 +9096,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9038,6 +9258,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9052,13 +9279,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9151,10 +9374,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/el.po b/editor/translations/el.po index 5c8ba5a794..468250901f 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -546,22 +546,13 @@ msgstr "ΣμÏκÏινση" msgid "Reset Zoom" msgstr "ΕπαναφοÏά μεγÎθυνσης" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Î Ïοειδοποιήσεις:" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "ΜÎγεθος πηγαίας γÏαμματοσειÏάς:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "ΓÏαμμή:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Î Ïοειδοποιήσεις" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Στήλη:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -866,8 +857,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "ΔιαγÏαφή" @@ -1292,9 +1283,30 @@ msgid "Storing File:" msgstr "ΑÏχείο αποθήκευσης:" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "" +"Δεν βÏÎθηκαν Ï€Ïότυπα εξαγωγής.\n" +"Κατεβάστε και εγκαταστήστε τα Ï€Ïότυπα εξαγωγής." + +#: editor/editor_export.cpp msgid "Packing" msgstr "ΠακετάÏισμα" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Το Ï€ÏοσαÏμοσμÎνο πακÎτο αποσφαλμάτωσης δεν βÏÎθηκε." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "Το Ï€ÏοσαÏμοσμÎνο πακÎτο παÏαγωγής δεν βÏÎθηκε." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Δεν βÏÎθηκε αÏχείο Ï€ÏοτÏπου:" @@ -3349,6 +3361,20 @@ msgstr "ΔιαμόÏφωση..." msgid "Reimport" msgstr "Επανεισαγωγή" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +#, fuzzy +msgid "Changing the type of an imported file requires editor restart." +msgstr "Η αλλαγή του Î¿Î´Î·Î³Î¿Ï Î²Î¯Î½Ï„ÎµÎ¿ απαιτεί επανεκκίνηση του επεξεÏγαστή." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "ΑπÎτυχε η φόÏτωση πόÏου." @@ -4325,6 +4351,16 @@ msgid "Move CanvasItem" msgstr "Μετακίνηση CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Μόνο άγκυÏες" @@ -6381,7 +6417,7 @@ msgid "Post" msgstr "Μετά" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6464,10 +6500,16 @@ msgid "(empty)" msgstr "(άδειο)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Κινήσεις" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Κίνηση" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "ΤαχÏτητα (FPS):" @@ -6476,7 +6518,8 @@ msgid "Loop" msgstr "Επανάληψη" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "ΚαÏΠκίνησης" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7276,6 +7319,38 @@ msgid "Browse" msgstr "ΠεÏιήγηση" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Ανώνυμο ÎÏγο" @@ -7290,6 +7365,19 @@ msgstr "Είστε σίγουÏοι πως θÎλετε να ανοίξετε Ï€ #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8009,6 +8097,18 @@ msgid "Duplicate Node(s)" msgstr "Διπλασιασμός κόμβων" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "ΔιαγÏαφή κόμβων;" @@ -8844,10 +8944,6 @@ msgid "Build Project" msgstr "Δόμηση ÎÏγου" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Î Ïοειδοποιήσεις" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Î Ïοβολή αÏχείου καταγÏαφής" @@ -9256,6 +9352,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Μη ÎγκυÏο όνομα κλάσης" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Το όνομα δεν είναι ÎγκυÏο αναγνωÏιστικό:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Το όνομα δεν είναι ÎγκυÏο αναγνωÏιστικό:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "ΕκτÎλεση στον πεÏιηγητή" @@ -9288,6 +9468,51 @@ msgstr "Σφάλμα κατά την ανάγνωση εικόνας εκκίνΠmsgid "Using default boot splash image." msgstr "ΧÏήση Ï€ÏοεπιλεγμÎνης εικόνας εκκίνησης." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "ΆκυÏο μοναδικό όνομα." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "ΆκυÏο GUID Ï€Ïοϊόντος." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "ΆκυÏο GUID εκδότη." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "ΆκυÏο χÏώμα παÏασκηνίου." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "ΆκυÏη εικόνα λογότυπου καταστήματος (Ï€ÏÎπει να είναι 50x50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 44x44 (Ï€ÏÎπει να είναι 44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 71x71 (Ï€ÏÎπει να είναι 71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 150x150 (Ï€ÏÎπει να είναι 150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 310x310 (Ï€ÏÎπει να είναι 310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "ΆκυÏη εικόνα ευÏÏ Î»Î¿Î³ÏŒÏ„Ï…Ï€Î¿Ï… 310x150 (Ï€ÏÎπει να είναι 310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "ΆκυÏες διαστάσεις εικόνας οθόνης εκκίνησης (Ï€ÏÎπει να είναι 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9399,6 +9624,13 @@ msgstr "" "Ένας κόμβος ParallaxLayer δουλεÏει μόνο όταν κληÏονομεί Îναν κόμβο Ï„Ïπου " "ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9588,6 +9820,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "Τίποτα δεν είναι οÏατό, επειδή δεν Îχουν οÏιστεί πεÏάσματα για τα πλÎγματα." @@ -9604,14 +9843,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "Το PathFollow2D δουλεÏει μόνο όταν κληÏονομεί Îναν κόμβο Path2D." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "Το PathFollow2D δουλεÏει μόνο όταν κληÏονομεί Îναν κόμβο Path2D." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9728,10 +9962,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Ωμή λειτουÏγία" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Î Ïοσθήκη του Ï„ÏÎχοντος χÏώματος ως Ï€ÏοκαθοÏισμÎνο" @@ -9830,6 +10072,23 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Warnings:" +#~ msgstr "Î Ïοειδοποιήσεις:" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "ΜÎγεθος πηγαίας γÏαμματοσειÏάς:" + +#~ msgid "Line:" +#~ msgstr "ΓÏαμμή:" + +#~ msgid "Col:" +#~ msgstr "Στήλη:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "Το PathFollow2D δουλεÏει μόνο όταν κληÏονομεί Îναν κόμβο Path2D." + #, fuzzy #~ msgid "Split already exists." #~ msgstr "Η ενÎÏγεια '%s' υπάÏχει ήδη!" @@ -11069,55 +11328,6 @@ msgstr "" #~ msgid "Error creating the package signature." #~ msgstr "Σφάλμα κατά τη δημιουÏγία της υπογÏαφής του πακÎτου." -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "Δεν βÏÎθηκαν Ï€Ïότυπα εξαγωγής.\n" -#~ "Κατεβάστε και εγκαταστήστε τα Ï€Ïότυπα εξαγωγής." - -#~ msgid "Custom debug package not found." -#~ msgstr "Το Ï€ÏοσαÏμοσμÎνο πακÎτο αποσφαλμάτωσης δεν βÏÎθηκε." - -#~ msgid "Custom release package not found." -#~ msgstr "Το Ï€ÏοσαÏμοσμÎνο πακÎτο παÏαγωγής δεν βÏÎθηκε." - -#~ msgid "Invalid unique name." -#~ msgstr "ΆκυÏο μοναδικό όνομα." - -#~ msgid "Invalid product GUID." -#~ msgstr "ΆκυÏο GUID Ï€Ïοϊόντος." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "ΆκυÏο GUID εκδότη." - -#~ msgid "Invalid background color." -#~ msgstr "ΆκυÏο χÏώμα παÏασκηνίου." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "ΆκυÏη εικόνα λογότυπου καταστήματος (Ï€ÏÎπει να είναι 50x50)." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 44x44 (Ï€ÏÎπει να είναι 44x44)." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 71x71 (Ï€ÏÎπει να είναι 71x71)." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "" -#~ "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 150x150 (Ï€ÏÎπει να είναι 150x150)." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "" -#~ "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 310x310 (Ï€ÏÎπει να είναι 310x310)." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "ΆκυÏη εικόνα ευÏÏ Î»Î¿Î³ÏŒÏ„Ï…Ï€Î¿Ï… 310x150 (Ï€ÏÎπει να είναι 310x150)." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "ΆκυÏες διαστάσεις εικόνας οθόνης εκκίνησης (Ï€ÏÎπει να είναι 620x300)." - #~ msgid "RAW Mode" #~ msgstr "ΑκατÎÏγαστη λειτουÏγία" diff --git a/editor/translations/es.po b/editor/translations/es.po index 0d24aab9f6..8f082f669e 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -10,11 +10,11 @@ # Carlos López <genetita@gmail.com>, 2016. # David Arranz <davarrcal@hotmail.com>, 2018. # David Couto <davidcouto@gmail.com>, 2017. -# Dharkael <izhe@hotmail.es>, 2017. +# Dharkael <izhe@hotmail.es>, 2017, 2019. # Diego López <diegodario21@gmail.com>, 2017. -# eon-s <emanuel.segretin@gmail.com>, 2018. +# eon-s <emanuel.segretin@gmail.com>, 2018, 2019. # Gustavo Leon <gleondiaz@gmail.com>, 2017-2018. -# Javier Ocampos <xavier.ocampos@gmail.com>, 2018. +# Javier Ocampos <xavier.ocampos@gmail.com>, 2018, 2019. # Jose Maria Martinez <josemar1992@hotmail.com>, 2018. # Juan Quiroga <juanquiroga9@gmail.com>, 2017. # Kiji Pixel <raccoon.fella@gmail.com>, 2017. @@ -37,12 +37,13 @@ # willy zegarra <willyzegarra58@gmail.com>, 2018. # emma peel <emma.peel@riseup.net>, 2018. # Vicente Juárez <vijuarez@uc.cl>, 2019. +# juan david julio <illus.kun@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:07+0000\n" -"Last-Translator: Vicente Juárez <vijuarez@uc.cl>\n" +"PO-Revision-Date: 2019-02-10 12:01+0000\n" +"Last-Translator: eon-s <emanuel.segretin@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" "Language: es\n" @@ -50,7 +51,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -67,12 +68,11 @@ msgstr "" #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "Entrada inválida %i (no pasado) en expresión" +msgstr "Entrada inválida %i (no se transmitió) en la expresión" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "" -"self no puede ser usado ya que la instancia es nula (no ha sido pasada)" +msgstr "self no puede ser usado ya que la instancia es nula (no pasó)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -462,7 +462,7 @@ msgstr "Usar Curvas Bezier" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" -msgstr "Optimizar animación" +msgstr "Optimizador de animación" #: editor/animation_track_editor.cpp msgid "Max. Linear Error:" @@ -580,21 +580,13 @@ msgstr "Alejar" msgid "Reset Zoom" msgstr "Restablecer zoom" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Advertencias:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Tamaño de la tipografÃa:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "LÃnea:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Advertencias" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Columna:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -629,7 +621,7 @@ msgstr "Quitar" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "Añadir argumento extra de llamada:" +msgstr "Añadir Argumento de Llamada Extra:" #: editor/connections_dialog.cpp msgid "Extra Call Arguments:" @@ -700,7 +692,8 @@ msgstr "Editar Conexión: " #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "¿Está seguro/a que quiere quitar todas las conexiones de esta señal?" +msgstr "" +"¿Estás seguro/a que quieres quitar todas las conexiones de la señal \"%s\"?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -896,8 +889,8 @@ msgstr "¿Eliminar los archivos seleccionados?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Eliminar" @@ -1006,7 +999,6 @@ msgid "Uncompressing Assets" msgstr "Descomprimiendo assets" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Package installed successfully!" msgstr "¡Paquete instalado exitosamente!" @@ -1325,9 +1317,26 @@ msgid "Storing File:" msgstr "Archivo de almacenamiento:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" +"No se ha encontrado ninguna plantilla de exportación en la ruta esperada:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Empaquetando" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "No se ha encontrado la plantilla de depuración personalizada." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "No se ha encontrado ninguna plantilla de lanzamineto personalizada." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Archivo de plantilla no encontrado:" @@ -1743,7 +1752,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "¡No se puede sobreescribir una escena que está abierta!" +msgstr "¡No se puede sobrescribir una escena que todavÃa está abierta!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2445,7 +2454,7 @@ msgstr "Importar" #: editor/editor_node.cpp msgid "FileSystem" -msgstr "Sistema de archivos" +msgstr "Sistema de Archivos" #: editor/editor_node.cpp msgid "Inspector" @@ -2630,17 +2639,14 @@ msgid "[Empty]" msgstr "[VacÃo]" #: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Assign..." msgstr "Asignar..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "Ruta inválida" +msgstr "RID no válido" #: editor/editor_properties.cpp -#, fuzzy msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." @@ -3355,6 +3361,21 @@ msgstr "Ajuste..." msgid "Reimport" msgstr "Reimportar" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "Guardar escenas, reimportar y reiniciar" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "Cambiar el tipo de un archivo importado requiere reiniciar el editor." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"ADVERTENCIA: Existen recursos que utilizan este recurso, pueden dejar de " +"cargar correctamente." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Error al cargar el recurso." @@ -3526,7 +3547,6 @@ msgstr "Añadir animación" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Load..." msgstr "Cargar..." @@ -3916,9 +3936,8 @@ msgid "Connect nodes." msgstr "Conectar nodos." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Remove selected node or transition." -msgstr "Quitar el nodo o transición seleccionado/a" +msgstr "Eliminar el nodo o transición seleccionado/a." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." @@ -3937,7 +3956,7 @@ msgstr "Transición: " #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "AnimationTree" -msgstr "Ãrbol de animación" +msgstr "AnimationTree" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "New name:" @@ -4322,6 +4341,19 @@ msgid "Move CanvasItem" msgstr "Mover CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"Advertencia: El tamaño y posición de los hijos de un contenedor es " +"determinado solo por su padre." + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Sólo anclado" @@ -5239,28 +5271,24 @@ msgid "Create Polygon & UV" msgstr "Crear PolÃgono y UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Crear nueva guÃa horizontal" +msgstr "Crear vértice interno" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "Eliminar punto In-Control" +msgstr "Eliminar vértice interno" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "PolÃgono no válido (necesita 3 vértices diferentes)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Editar PolÃgono" +msgstr "Añadir polÃgono personalizado" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Remover PolÃgono y Punto" +msgstr "Eliminar polÃgono personalizado" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5287,14 +5315,12 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Punto" +msgstr "Puntos" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "PolÃgono->UV" +msgstr "PolÃgonos" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -5331,12 +5357,16 @@ msgstr "Escalar polÃgono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." msgstr "" +"Crea un polÃgono personalizado. Se habilita la renderización del polÃgono " +"personalizado." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"Eliminar un polÃgono personalizado. Si no queda ninguno, desactivar la " +"renderización del polÃgono personalizado." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -6223,31 +6253,31 @@ msgstr "Ajustar objeto al suelo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." -msgstr "Dialogo de transformación..." +msgstr "Dialogo de Transformación..." #: editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" -msgstr "1 viewport" +msgstr "1 Viewport" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports" -msgstr "2 viewports" +msgstr "2 Viewports" #: editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" -msgstr "2 viewports (Alt)" +msgstr "2 Viewports (Alt)" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports" -msgstr "3 viewports" +msgstr "3 Viewports" #: editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" -msgstr "3 viewports (Alt)" +msgstr "3 Viewports (Alt)" #: editor/plugins/spatial_editor_plugin.cpp msgid "4 Viewports" -msgstr "4 viewports" +msgstr "4 Viewports" #: editor/plugins/spatial_editor_plugin.cpp msgid "Gizmos" @@ -6327,8 +6357,9 @@ msgid "Post" msgstr "Posterior" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" -msgstr "" +#, fuzzy +msgid "Nameless gizmo" +msgstr "Gizmo sin nombre" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" @@ -6403,10 +6434,16 @@ msgid "(empty)" msgstr "(vacÃo)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animaciones" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animación" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Velocidad (FPS):" @@ -6415,7 +6452,8 @@ msgid "Loop" msgstr "Repetir" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Fotogramas de animación" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6732,9 +6770,10 @@ msgid "Display Tile Names (Hold Alt Key)" msgstr "Mostrar Nombres de Tiles (mantener Tecla Alt)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "¿Borrar textura seleccionada y TODOS LOS TILES que la utilizan?" +msgstr "" +"¿Eliminar la textura seleccionada? Esto eliminará todas las tiles que lo " +"utilizan." #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." @@ -6742,16 +6781,15 @@ msgstr "No elegiste una textura para eliminar." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." -msgstr "" +msgstr "¿Crear desde la escena? Esto sobrescribirá todos los tiles actuales." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" msgstr "¿Mezclar desde escena?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Texture" -msgstr "Eliminar plantilla" +msgstr "Eliminar Textura" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." @@ -6818,86 +6856,72 @@ msgstr "" "Clic en otro Tile para editarlo." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Set Tile Region" -msgstr "Establecer rectángulo de región" +msgstr "Establecer Región de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Tile" -msgstr "Crear carpeta" +msgstr "Crear Tile" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "" +msgstr "Establecer Icono de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Bitmask" -msgstr "Editar filtros" +msgstr "Editar Máscara de Bits de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Collision Polygon" -msgstr "Editar polÃgono existente:" +msgstr "Editar PolÃgono de Colisión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Occlusion Polygon" -msgstr "Editar PolÃgono" +msgstr "Editar PolÃgono de Oclusión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Navigation Polygon" -msgstr "Crear polÃgono de navegación" +msgstr "Editar PolÃgono de Navegación" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste Tile Bitmask" -msgstr "Pegar bitmask." +msgstr "Pegar Máscara de Bits de Tile" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "" +msgstr "Reestablecer Máscara de Bits de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Tile" -msgstr "Eliminar plantilla" +msgstr "Eliminar Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Collision Polygon" -msgstr "Remover PolÃgono y Punto" +msgstr "Eliminar PolÃgono de Colisión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Occlusion Polygon" -msgstr "Crear polÃgono oclusor" +msgstr "Eliminar PolÃgono de Oclusión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Navigation Polygon" -msgstr "Crear polÃgono de navegación" +msgstr "Crear PolÃgono de Navegación" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Priority" -msgstr "Editar filtros" +msgstr "Editar Prioridad del Tile" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" -msgstr "" +msgstr "Editar Z Index de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Collision Polygon" -msgstr "Crear polÃgono de navegación" +msgstr "Crear PolÃgono de Colisión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Occlusion Polygon" -msgstr "Crear polÃgono oclusor" +msgstr "Crear PolÃgono de Oclusión" #: editor/plugins/tile_set_editor_plugin.cpp msgid "This property can't be changed." @@ -7019,9 +7043,8 @@ msgid "Feature List:" msgstr "Lista de caracterÃsticas:" #: editor/project_export.cpp -#, fuzzy msgid "Script" -msgstr "Nuevo script" +msgstr "Script" #: editor/project_export.cpp msgid "Script Export Mode:" @@ -7185,19 +7208,82 @@ msgid "Browse" msgstr "Examinar" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "Renderizador:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"Mayor calidad visual\n" +"Todas las caracterÃsticas disponibles\n" +"Incompatible con hardware antiguo\n" +"No recomendado para juegos web" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 2.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"Baja calidad visual\n" +"Algunas caracterÃsticas no disponibles\n" +"Funciona en la mayorÃa de hardware\n" +"Recomendado para juegos web" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" +"El renderizador se puede cambiar más tarde, pero es posible que las escenas " +"deban ajustarse." + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Proyecto sin nombre" #: editor/project_manager.cpp -#, fuzzy msgid "Can't open project at '%s'." -msgstr "No se puede abrir proyecto" +msgstr "No se puede abrir el proyecto en '%s'." #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" msgstr "¿Seguro que quieres abrir más de un proyecto?" #: editor/project_manager.cpp +#, fuzzy +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"El siguiente archivo de configuración del proyecto fue generado por una " +"versión anterior del motor y debe convertirse para esta versión:\n" +"\n" +"%s\n" +"\n" +"¿Quieres convertirlo?\n" +"Advertencia: ya no podrá abrir el proyecto con versiones anteriores del " +"motor." + +#: editor/project_manager.cpp msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -7208,12 +7294,22 @@ msgid "" "Warning: You will not be able to open the project with previous versions of " "the engine anymore." msgstr "" +"El siguiente archivo de configuración del proyecto fue generado por una " +"versión anterior del motor y debe convertirse para esta versión:\n" +"\n" +"%s\n" +"\n" +"¿Quieres convertirlo?\n" +"Advertencia: ya no podrá abrir el proyecto con versiones anteriores del " +"motor." #: editor/project_manager.cpp msgid "" "The project settings were created by a newer engine version, whose settings " "are not compatible with this version." msgstr "" +"La configuración del proyecto fue creada por una nueva versión del motor, " +"cuya configuración no es compatible con esta versión." #: editor/project_manager.cpp msgid "" @@ -7903,6 +7999,20 @@ msgid "Duplicate Node(s)" msgstr "Duplicar nodo(s)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" +"No se pueden reparar los nodos en las escenas heredadas, el orden de los " +"nodos no puede cambiar." + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "El nodo debe pertenecer a la escena editada para convertirse en raÃz." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "Las escenas instanciadas no pueden ser raÃz" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "¿Eliminar nodo(s)?" @@ -7968,7 +8078,7 @@ msgstr "¡No se puede operar sobre los nodos heredados por la escena actual!" #: editor/scene_tree_dock.cpp msgid "Attach Script" -msgstr "Añadir script" +msgstr "Añadir Script" #: editor/scene_tree_dock.cpp msgid "Remove Node(s)" @@ -8712,10 +8822,6 @@ msgid "Build Project" msgstr "Compilar proyecto" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Advertencias" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Ver registro" @@ -8741,7 +8847,7 @@ msgstr "Calculando tamaño de cuadrÃcula..." #: modules/recast/navigation_mesh_generator.cpp msgid "Creating heightfield..." -msgstr "Creando heightfield..." +msgstr "Creando campo de alturas..." #: modules/recast/navigation_mesh_generator.cpp msgid "Marking walkable triangles..." @@ -8765,7 +8871,7 @@ msgstr "Creando contornos..." #: modules/recast/navigation_mesh_generator.cpp msgid "Creating polymesh..." -msgstr "Crear polymesh..." +msgstr "Creando polymesh..." #: modules/recast/navigation_mesh_generator.cpp msgid "Converting to native navigation mesh..." @@ -9071,7 +9177,7 @@ msgstr "¡El objeto base no es un nodo!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "¡La ruta no apunta a un nodo!" +msgstr "¡La ruta no apunta a un Nodo!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." @@ -9119,6 +9225,94 @@ msgstr "Obtener %s" msgid "Set %s" msgstr "Establecer %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "Nombre de paquete faltante." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "Los segmentos del paquete deben ser de largo no nulo." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" +"El carácter '%s' no está permitido en nombres de paquete de aplicación " +"Android." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "Un dÃgito no puede ser el primer carácter en un segmento de paquete." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" +"El carácter '%s' no puede ser el primer carácter en un segmento de paquete." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "El paquete debe tener al menos un '.' como separador." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "Ejecutable ADB no configurado en Ajustes del Editor." + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "OpenJDK jarsigner no configurado en Ajustes del Editor." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "Keystore debug no configurada en Ajustes del Editor ni en el preset." + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "Clave pública inválida para la expansión de APK." + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "Nombre de paquete inválido:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "Identificador no encontrado." + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "Los segmentos de un identificador deben ser de largo no nulo." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "El carácter '%s' no esta permitido como identificador." + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" +"Un dÃgito no puede ser el primer carácter en un segmento Identificador." + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" +"El carácter '%s' no puede ser el primer carácter en un segmento " +"Identificador." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "El Identificador debe tener al menos un '.' como separador." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" +"App Store Team ID no especificado - no se puede configurar el proyecto." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "Identificador inválido:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "El icono requerido no está especificado en el preset." + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Ejecutar en navegador" @@ -9151,6 +9345,63 @@ msgstr "No se pudo leer la imagen de carga:" msgid "Using default boot splash image." msgstr "Usando la imagen de carga por defecto." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "Nombre único de paquete inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "GUID de producto inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "GUID de publisher inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Color de fondo inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" +"Las dimensiones de la imagen para el Store Logo son inválidas (deberÃa ser " +"50x50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" +"Las dimensiones de la imagen para el logo cuadrado de 44x44 son inválidas " +"(deberÃa ser 44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" +"Las dimensiones de la imagen para el logo cuadrado de 71x71 son inválidas " +"(deberÃa ser 71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" +"Las dimensiones de la imagen para el logo cuadrado de 150x150 son inválidas " +"(deberÃa ser 150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" +"Las dimensiones de la imagen para el logo cuadrado de 310x310 son inválidas " +"(deberÃa ser 310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" +"Las dimensiones de la imagen para el logo ancho de 310x150 son inválidas " +"(deberÃa ser 310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" +"Las dimensiones de la imagen del splash son inválidas (deberÃa ser 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9263,6 +9514,13 @@ msgstr "" "En nodo ParallaxLayer solo funciona cuando esta posicionado como hijo de un " "nodo ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9454,6 +9712,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "Nada es visible porque las mallas no se han asignado a los pases de dibujo." @@ -9472,18 +9737,12 @@ msgstr "" "PathFollow solo funciona cuando está asignado como hijo de un nodo Path." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"OrientedPathFollow solo funciona cuando esta asignado como hijo de un nodo " -"Path." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" -"OrientedPathFollow requiere que \"Up Vector\" esté activo en el recurso " -"Curve de su Path padre." +"PathFollow ROTATION_ORIENTED requiere que \"Up Vector\" esté activo en el " +"recurso Curve de su Path padre." #: scene/3d/physics_body.cpp msgid "" @@ -9593,10 +9852,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "Este nodo ha quedado obsoleto. Usa AnimationTree en su lugar." #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Modo Raw" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Añadir el color actual como predeterminado" @@ -9692,6 +9959,23 @@ msgstr "Asignación a uniform." msgid "Varyings can only be assigned in vertex function." msgstr "Solo se pueden asignar variaciones en funciones de vértice." +#~ msgid "Warnings:" +#~ msgstr "Advertencias:" + +#~ msgid "Font Size:" +#~ msgstr "Tamaño de la tipografÃa:" + +#~ msgid "Line:" +#~ msgstr "LÃnea:" + +#~ msgid "Col:" +#~ msgstr "Columna:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "OrientedPathFollow solo funciona cuando esta asignado como hijo de un " +#~ "nodo Path." + #~ msgid "Split point with itself." #~ msgstr "Dividir punto con sà mismo." @@ -10966,73 +11250,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." #~ msgstr "Se produjo un error al firmar el paquete." #, fuzzy -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "No se han encontrado plantillas de exportación.\n" -#~ "Tienes que descargar e instalarlas para continuar." - -#, fuzzy -#~ msgid "Custom debug package not found." -#~ msgstr "No se ha encontrado ningún paquete de depuración personalizado." - -#~ msgid "Custom release package not found." -#~ msgstr "No se ha encontrado ningún paquete final personalizado." - -#, fuzzy -#~ msgid "Invalid unique name." -#~ msgstr "El nombre no es correcto." - -#, fuzzy -#~ msgid "Invalid product GUID." -#~ msgstr "Tamaño de tipografÃa incorrecto." - -#, fuzzy -#~ msgid "Invalid publisher GUID." -#~ msgstr "Ruta base incorrecta" - -#, fuzzy -#~ msgid "Invalid background color." -#~ msgstr "El origen personalizado de tipografÃa no es correcto." - -#, fuzzy -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "El logo de la tienda no es del tamaño adecuado (debe ser de 50x50)." - -#, fuzzy -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "" -#~ "El logo cuadrado de 44x44 no es del tamaño adecuado (debe ser de 44x44)." - -#, fuzzy -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "" -#~ "El logo cuadrado de 71x71 no es del tamaño adecuado (debe ser de 71x71)." - -#, fuzzy -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "" -#~ "El logo cuadrado de 150x150 no es del tamaño adecuado (debe ser de " -#~ "150x150)." - -#, fuzzy -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "" -#~ "El logo cuadrado de 310x310 no es del tamaño adecuado (debe ser de " -#~ "310x310)." - -#, fuzzy -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "" -#~ "El logo ancho de 310x150 no es del tamaño adecuado (debe ser de 310x150)." - -#, fuzzy -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "El tamaño de la imagen de arranque no es correcto (debe ser de 620x300)." - -#, fuzzy #~ msgid "RAW Mode" #~ msgstr "Modo de ejecución:" diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index 7b0465f2a9..a9a512c65d 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -3,17 +3,18 @@ # Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) # This file is distributed under the same license as the Godot source code. # Diego López <diegodario21@gmail.com>, 2017. -# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2018. +# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2018, 2019. # Roger Blanco Ribera <roger.blancoribera@gmail.com>, 2016-2018. # Sebastian Silva <sebastian@sugarlabs.org>, 2016. # Jose Luis Bossio <joseluisbossio@gmail.com>, 2018. # Reynaldo Cruz <rcruz60@gmail.com>, 2018. -# Javier Ocampos <xavier.ocampos@gmail.com>, 2018. +# Javier Ocampos <xavier.ocampos@gmail.com>, 2018, 2019. +# Andrés S <andres.segovia.dev@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-22 11:09+0000\n" +"PO-Revision-Date: 2019-02-10 12:02+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" @@ -22,7 +23,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -549,21 +550,13 @@ msgstr "Zoom Out" msgid "Reset Zoom" msgstr "Resetear el Zoom" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Advertencias:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Tamaño de TipografÃa:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Linea:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Advertencias" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Col:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -864,8 +857,8 @@ msgstr "Eliminar archivos seleccionados?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Eliminar" @@ -974,9 +967,8 @@ msgid "Uncompressing Assets" msgstr "Descomprimiendo Assets" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Package installed successfully!" -msgstr "El Paquete se Instaló Exitosamente!" +msgstr "El Paquete se instaló exitosamente!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -1293,9 +1285,25 @@ msgid "Storing File:" msgstr "Almacenando Archivo:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "No se encontraron plantillas de exportación en la ruta esperada:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Empaquetando" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "Plantilla debug personalizada no encontrada." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "Plantilla release personalizada no encontrada." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Plantilla no encontrada:" @@ -2598,22 +2606,19 @@ msgid "[Empty]" msgstr "[Vacio]" #: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Assign..." -msgstr "Asignar.." +msgstr "Asignar..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "Ruta inválida" +msgstr "RID Inválido" #: editor/editor_properties.cpp -#, fuzzy msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." msgstr "" -"El recurso seleccionado (%s) no concuerda con el tipo esperado para esta " +"El recurso seleccionado (%s) no concuerda con ningún tipo esperado para esta " "propiedad (%s)." #: editor/editor_properties.cpp @@ -3320,6 +3325,23 @@ msgstr "Preseteo..." msgid "Reimport" msgstr "Reimportar" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "Guardar escenas, reimportar y reiniciá" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" +"Para cambiar el tipo de un archivo importado es necesario reiniciar el " +"editor." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"ADVERTENCIA: Existen elementos que utilizan este recurso, podrÃan dejar de " +"cargar correctamente." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Fallo al cargar recurso." @@ -3491,9 +3513,8 @@ msgstr "Agregar Animación" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Load..." -msgstr "Cargar.." +msgstr "Cargar..." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3881,9 +3902,8 @@ msgid "Connect nodes." msgstr "Conectar nodos." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Remove selected node or transition." -msgstr "Quitar el nodo o transición seleccionado/a" +msgstr "Quitar el nodo o transición seleccionado/a." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." @@ -4287,6 +4307,19 @@ msgid "Move CanvasItem" msgstr "Mover CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"Advertencia: El tamaño y posición de los hijos de un contenedor es " +"determinado solo por su padre." + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Solo anclas" @@ -4473,7 +4506,7 @@ msgstr "Restablecer Huesos Personalizados" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "View" -msgstr "Ver" +msgstr "Vista" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp @@ -5198,28 +5231,24 @@ msgid "Create Polygon & UV" msgstr "Crear PolÃgono y UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Crear nueva guÃa horizontal" +msgstr "Crear Vértice Interno" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "Quitar Punto In-Control" +msgstr "Quitar Vértice Interno" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "PolÃgono Inválido (se necesitan 3 vértices diferentes)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Editar PolÃgono" +msgstr "Agregar PolÃgono Personalizado" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Remover PolÃgono y Punto" +msgstr "Remover PolÃgono Personalizado" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5246,14 +5275,12 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Punto" +msgstr "Puntos" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "PolÃgono->UV" +msgstr "PolÃgonos" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -5290,12 +5317,16 @@ msgstr "Escalar PolÃgono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." msgstr "" +"Crear un polÃgono personalizado. Activa el rendering de polÃgonos " +"personalizados." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"Remover un polÃgono personalizado. Si no queda ninguno, se desactiva el " +"rendering de polÃgonos personalizados." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -5872,15 +5903,15 @@ msgstr "Ver Transformación en Plano." #: editor/plugins/spatial_editor_plugin.cpp msgid "Scaling: " -msgstr "Escalado: " +msgstr "Escalando: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Translating: " -msgstr "Traducciones: " +msgstr "Trasladando: " #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotating %s degrees." -msgstr "Torando %s grados." +msgstr "Rotando %s grados." #: editor/plugins/spatial_editor_plugin.cpp msgid "Keying is disabled (no key inserted)." @@ -6094,7 +6125,7 @@ msgstr "Modo Rotar (E)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Mode (R)" -msgstr "Modo de Escalado (R)" +msgstr "Modo Escalar (R)" #: editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" @@ -6182,7 +6213,7 @@ msgstr "Ajustar objeto al suelo" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." -msgstr "Dialogo de Transformación..." +msgstr "Cuadro de diálogo de Transform..." #: editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" @@ -6286,8 +6317,9 @@ msgid "Post" msgstr "Post" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" -msgstr "" +#, fuzzy +msgid "Nameless gizmo" +msgstr "Gizmo sin nombre" #: editor/plugins/sprite_editor_plugin.cpp msgid "Sprite is empty!" @@ -6362,10 +6394,16 @@ msgid "(empty)" msgstr "(vacÃo)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animaciones" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animación" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Velocidad (FPS):" @@ -6374,7 +6412,8 @@ msgid "Loop" msgstr "Loop" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Cuadros de Animación" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6691,9 +6730,9 @@ msgid "Display Tile Names (Hold Alt Key)" msgstr "Mostrar Nombres de Tiles (mantener Tecla Alt)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "¿Quitar Textura Seleccionada y TODOS LOS TILES que la usen?" +msgstr "" +"¿Remover la textura seleccionada? Esto removerá todos los tiles que la usan." #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." @@ -6701,16 +6740,15 @@ msgstr "No elegiste una textura para remover." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." -msgstr "" +msgstr "¿Crear desde escena? Esto sobreescribirá todos los tiles actuales." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" msgstr "¿Mergear desde escena?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Texture" -msgstr "Remover Plantilla" +msgstr "Remover Textura" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." @@ -6777,86 +6815,72 @@ msgstr "" "Click en otro Tile para editarlo." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Set Tile Region" -msgstr "Setear Region Rect" +msgstr "Asignar Región de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Tile" -msgstr "Crear Carpeta" +msgstr "Crear Tile" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "" +msgstr "Asignar Icono de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Bitmask" -msgstr "Editar Filtros" +msgstr "Editar Máscara de Bits de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Collision Polygon" -msgstr "Editar polÃgono existente:" +msgstr "Editar PolÃgono de Colisión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Occlusion Polygon" -msgstr "Editar PolÃgono" +msgstr "Editar PolÃgono de Oclusión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Navigation Polygon" -msgstr "Crear PolÃgono de Navegación" +msgstr "Editar PolÃgono de Navegación" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste Tile Bitmask" -msgstr "Pegar bitmask." +msgstr "Pegar Máscara de Bits de Tile" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "" +msgstr "Reestablecer Máscara de Bits de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Tile" -msgstr "Remover Plantilla" +msgstr "Remover Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Collision Polygon" -msgstr "Remover PolÃgono y Punto" +msgstr "Remover PolÃgono de Colisión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Occlusion Polygon" -msgstr "Crear PolÃgono Oclusor" +msgstr "Remover PolÃgono de Oclusión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Navigation Polygon" -msgstr "Crear PolÃgono de Navegación" +msgstr "Remover PolÃgono de Navegación" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Priority" -msgstr "Editar Filtros" +msgstr "Editar Prioridad de Tile" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" -msgstr "" +msgstr "Editar Z Index de Tile" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Collision Polygon" -msgstr "Crear PolÃgono de Navegación" +msgstr "Crear PolÃgono de Colisión" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Occlusion Polygon" -msgstr "Crear PolÃgono Oclusor" +msgstr "Crear PolÃgono de Oclusión" #: editor/plugins/tile_set_editor_plugin.cpp msgid "This property can't be changed." @@ -6979,9 +7003,8 @@ msgid "Feature List:" msgstr "Lista de CaracterÃsticas:" #: editor/project_export.cpp -#, fuzzy msgid "Script" -msgstr "Nuevo Script" +msgstr "Script" #: editor/project_export.cpp msgid "Script Export Mode:" @@ -7001,7 +7024,7 @@ msgstr "Encriptado (Proveer la Clave Debajo)" #: editor/project_export.cpp msgid "Invalid Encryption Key (must be 64 characters long)" -msgstr "" +msgstr "Clave de Encriptación Inválida (debe tener 64 caracteres de largo)" #: editor/project_export.cpp msgid "Script Encryption Key (256-bits as hex):" @@ -7145,19 +7168,82 @@ msgid "Browse" msgstr "Examinar" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "Renderizador:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"Mayor calidad visual\n" +"Todas las caracterÃsticas disponibles\n" +"Incompatible con hardware antiguo\n" +"No recomendado para juegos web" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"Baja calidad visual\n" +"Algunas caracterÃsticas no disponibles\n" +"Funciona en la mayorÃa de hardware\n" +"Recomendado para juegos web" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" +"El renderizador se puede cambiar luego, pero es posible que sea necesario " +"ajustar las escenas." + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Proyecto Sin Nombre" #: editor/project_manager.cpp -#, fuzzy msgid "Can't open project at '%s'." -msgstr "No se pudo abrir el proyecto" +msgstr "No se puede abrir el proyecto en '%s'." #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" msgstr "¿Estás seguro/a que quieres abrir más de un proyecto?" #: editor/project_manager.cpp +#, fuzzy +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"Las siguientes configuraciones de proyecto fueron generadas para una versión " +"anterior del motor, y deben ser convertidas para esta versión:\n" +"\n" +"%s\n" +"\n" +"¿Querés convertirlas?\n" +"Advertencia: No vas a poder volver a abrir el proyecto con versiones " +"anteriores del motor." + +#: editor/project_manager.cpp msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -7168,12 +7254,22 @@ msgid "" "Warning: You will not be able to open the project with previous versions of " "the engine anymore." msgstr "" +"Las siguientes configuraciones de proyecto fueron generadas para una versión " +"anterior del motor, y deben ser convertidas para esta versión:\n" +"\n" +"%s\n" +"\n" +"¿Querés convertirlas?\n" +"Advertencia: No vas a poder volver a abrir el proyecto con versiones " +"anteriores del motor." #: editor/project_manager.cpp msgid "" "The project settings were created by a newer engine version, whose settings " "are not compatible with this version." msgstr "" +"Los configuraciones de proyecto fueron creadas con una versión mas reciente " +"del motor y no son compatibles con esta versión." #: editor/project_manager.cpp msgid "" @@ -7863,6 +7959,20 @@ msgid "Duplicate Node(s)" msgstr "Duplicar Nodo(s)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" +"No se puede reemparentar nodos en escenas heredadas, el orden de nodos no " +"puede cambiar." + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "El nodo debe pertenecer a la escena editada para convertirse en raÃz." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "Las escenas instanciadas no pueden convertirse en raÃz" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Eliminar Nodo(s)?" @@ -8672,10 +8782,6 @@ msgid "Build Project" msgstr "Construir Proyecto" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Advertencias" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Ver registro" @@ -9078,6 +9184,95 @@ msgstr "Obtener %s" msgid "Set %s" msgstr "Asignar %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "Nombre de paquete faltante." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "Los segmentos del paquete deben ser de largo no nulo." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" +"El caracter '%s' no está permitido en nombres de paquete de aplicación " +"Android." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "Un dÃgito no puede ser el primer caracter en un segmento de paquete." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" +"El caracter '%s' no puede ser el primer caracter en un segmento de paquete." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "El paquete debe tener al menos un '.' como separador." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "Ejecutable ADB no configurado en Configuración del Editor." + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "OpenJDK jarsigner no configurado en Configuración del Editor." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" +"Keystore debug no configurada en Configuración del Editor ni en el preset." + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "Clave pública inválida para la expansión de APK." + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "Nombre de paquete inválido:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "Identificador no encontrado." + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "Los segmentos de un identificador deben ser de largo no nulo." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "El caracter '%s' no esta permitido como identificador." + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" +"Un dÃgito no puede ser el primer caracter en un segmento Identificador." + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" +"El caracter '%s' no puede ser el primer caracter en un segmento " +"Identificador." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "El Identificador debe tener al menos un '.' como separador." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" +"App Store Team ID no especificado - no se puede configurar el proyecto." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "Identificador inválido:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "El icono requerido no esta especificado en el preset." + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Ejecutar en el Navegador" @@ -9110,6 +9305,61 @@ msgstr "No se pudo leer la imagen de boot splash:" msgid "Using default boot splash image." msgstr "Usando imagen boot splash por defecto." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "Nombre único de paquete inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "GUID de producto inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "GUID de publisher inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Color de fondo inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" +"Dimensiones de la imagen para el Store Logo inválidas (deberÃa ser 50x50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" +"Dimensiones de la imagen para el logo cuadrado de 44x44 inválidas (deberÃa " +"ser 44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" +"Dimensiones de la imagen para el logo cuadrado de 71x71 inválidas (deberÃa " +"ser 71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" +"Dimensiones de la imagen para el logo cuadrado de 150x150 inválidas (deberÃa " +"ser 150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" +"Dimensiones de la imagen para el logo cuadrado de 310x310 inválidas (deberÃa " +"ser 310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" +"Dimensiones de la imagen para el logo ancho de 310x150 inválidas (deberÃa " +"ser 310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Dimensiones de la imagen del splash inválidas (deberÃa ser 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9219,6 +9469,13 @@ msgstr "" "El nodo ParallaxLayer sólo funciona cuando está seteado como hijo de un nodo " "ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9408,6 +9665,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "Nada visible ya que no se asigno pasadas de dibujado a los meshes." @@ -9425,18 +9689,12 @@ msgstr "" "PathFollow solo funciona cuando está asignado como hijo de un nodo Path." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"OrientedPathFollow solo funciona cuando esta asignado como hijo de un nodo " -"Path." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" -"OrientedPathFollow requiere que \"Up Vector\" esté activo en el recurso " -"Curve de su Path padre." +"PathFollow ROTATION_ORIENTED requiere que \"Up Vector\" esté activo en el " +"recurso Curve de su Path padre." #: scene/3d/physics_body.cpp msgid "" @@ -9546,10 +9804,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "Este nodo ha sido deprecado. Usá AnimationTree." #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Modo Raw" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Agregar color actual como preset" @@ -9645,6 +9911,23 @@ msgstr "Asignación a uniform." msgid "Varyings can only be assigned in vertex function." msgstr "Solo se pueden asignar variaciones en funciones de vértice." +#~ msgid "Warnings:" +#~ msgstr "Advertencias:" + +#~ msgid "Font Size:" +#~ msgstr "Tamaño de TipografÃa:" + +#~ msgid "Line:" +#~ msgstr "Linea:" + +#~ msgid "Col:" +#~ msgstr "Col:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "OrientedPathFollow solo funciona cuando esta asignado como hijo de un " +#~ "nodo Path." + #~ msgid "Split point with itself." #~ msgstr "Dividir punto con sà mismo." @@ -10895,64 +11178,6 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." #~ msgid "Error creating the package signature." #~ msgstr "Error al crear la firma del paquete." -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "No se encontraron plantillas de exportación.\n" -#~ "Descargá o instalá plantillas de exportación." - -#~ msgid "Custom debug package not found." -#~ msgstr "Paquete debug personalizado no encontrado." - -#~ msgid "Custom release package not found." -#~ msgstr "Paquete release personalizado no encontrado." - -#~ msgid "Invalid unique name." -#~ msgstr "Nombre único inválido." - -#~ msgid "Invalid product GUID." -#~ msgstr "GUID de producto inválido." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "GUID de publisher inválido." - -#~ msgid "Invalid background color." -#~ msgstr "Color de fondo inválido." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "" -#~ "Dimensiones de la imagen para el Store Logo inválidas (deberÃa ser 50x50)." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "" -#~ "Dimensiones de la imagen para el logo cuadrado de 44x44 inválidas " -#~ "(deberÃa ser 44x44)." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "" -#~ "Dimensiones de la imagen para el logo cuadrado de 71x71 inválidas " -#~ "(deberÃa ser 71x71)." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "" -#~ "Dimensiones de la imagen para el logo cuadrado de 150x150 inválidas " -#~ "(deberÃa ser 150x150)." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "" -#~ "Dimensiones de la imagen para el logo cuadrado de 310x310 inválidas " -#~ "(deberÃa ser 310x310)." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "" -#~ "Dimensiones de la imagen para el logo ancho de 310x150 inválidas (deberÃa " -#~ "ser 310x150)." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "Dimensiones de la imagen del splash inválidas (deberÃa ser 620x400)." - #~ msgid "RAW Mode" #~ msgstr "Modo RAW" diff --git a/editor/translations/et.po b/editor/translations/et.po index a31dd80762..2919e14b82 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -1,4 +1,4 @@ -# LANGUAGE translation of the Godot Engine editor +# Estonian translation of the Godot Engine editor # Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. # Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) # This file is distributed under the same license as the Godot source code. @@ -6,6 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" +"Language-Team: Estonian <https://hosted.weblate.org/projects/godot-engine/" +"godot/et/>\n" "Language: et\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" @@ -524,20 +526,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -831,8 +825,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1249,9 +1243,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3169,6 +3179,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4105,6 +4128,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6081,7 +6114,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6157,7 +6190,11 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +msgid "Animations:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6169,7 +6206,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6900,6 +6937,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6913,6 +6982,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7591,6 +7673,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8377,10 +8471,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8768,6 +8858,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8800,6 +8971,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8881,6 +9096,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9036,6 +9258,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9050,13 +9279,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9149,10 +9374,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/fa.po b/editor/translations/fa.po index fce5d80ac1..49b594677f 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -560,22 +560,14 @@ msgstr "بزرگنمایی کمتر" msgid "Reset Zoom" msgstr "بازنشانی بزرگنمایی" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -msgid "Line:" -msgstr "خط:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "ستون:" - #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" msgstr "متد در گره مقصد باید مشخص شده باشد!" @@ -883,8 +875,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "ØØ°Ù Ú©Ù†" @@ -1309,9 +1301,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3304,6 +3312,19 @@ msgstr "" msgid "Reimport" msgstr "وارد کردن دوباره" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4281,6 +4302,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6332,7 +6363,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6413,8 +6444,14 @@ msgid "(empty)" msgstr "(خالی)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "گره انیمیشن" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "تغییر نام انیمیشن" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6425,8 +6462,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "گره انیمیشن" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7211,6 +7249,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "پروژه بی نام" @@ -7225,6 +7295,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7925,6 +8008,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "ØØ°Ù گره(ها)ØŸ" @@ -8759,10 +8854,6 @@ msgid "Build Project" msgstr "پروژه" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "نمایش پرونده ها" @@ -9178,6 +9269,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "نام نامعتبر." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "نام یک شناسه‌ی معتبر نیست:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "نام یک شناسه‌ی معتبر نیست:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9216,6 +9391,54 @@ msgstr "نمی‌تواند یک پوشه ایجاد شود." msgid "Using default boot splash image." msgstr "نمی‌تواند یک پوشه ایجاد شود." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "نام نامعتبر." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "اندازه‌ی قلم نامعتبر." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "اندازه‌ی قلم نامعتبر." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "نام نامعتبر." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9320,6 +9543,13 @@ msgstr "" "گره ParallaxLayer تنها در زمانی Ú©Ù‡ به عنوان ÙØ±Ø²Ù†Ø¯ یک گره ParallaxBackground " "تنظیم شود کار می‌کند." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9491,6 +9721,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9508,16 +9745,9 @@ msgstr "" "می‌کند." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D تنها در زمانی Ú©Ù‡ به عنوان یک ÙØ±Ø²Ù†Ø¯ یک گره Path2D تنظیم شود کار " -"می‌کند." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9620,10 +9850,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9715,6 +9953,18 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Line:" +#~ msgstr "خط:" + +#~ msgid "Col:" +#~ msgstr "ستون:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D تنها در زمانی Ú©Ù‡ به عنوان یک ÙØ±Ø²Ù†Ø¯ یک گره Path2D تنظیم شود " +#~ "کار می‌کند." + #, fuzzy #~ msgid "Split already exists." #~ msgstr "پیش از این وجود داشته است" @@ -10006,10 +10256,6 @@ msgstr "" #~ msgid "Ctrl+" #~ msgstr "+Ctrl" -#, fuzzy -#~ msgid "Invalid product GUID." -#~ msgstr "اندازه‌ی قلم نامعتبر." - #~ msgid "Path property must point to a valid Particles2D node to work." #~ msgstr "دارایی Path باید به یک گره Particles2D معتبر اشاره کند تا کار کند." diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 5a8515b81d..22655d8f02 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:06+0000\n" +"PO-Revision-Date: 2019-02-09 18:11+0000\n" "Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/" "godot/fi/>\n" @@ -22,7 +22,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -543,21 +543,13 @@ msgstr "Loitonna" msgid "Reset Zoom" msgstr "Palauta oletuslähennystaso" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Varoitukset:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Fontin koko:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Rivi:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Varoitukset" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Sarake:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -859,8 +851,8 @@ msgstr "Poista valitut tiedostot?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Poista" @@ -1287,9 +1279,25 @@ msgid "Storing File:" msgstr "Varastoidaan tiedostoa:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "Vientimallia ei löytynyt odotetusta polusta:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Pakataan" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "Mukautettua debug-vientimallia ei löytynyt." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "Mukautettua release-vientimallia ei löytynyt." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Mallitiedostoa ei löytynyt:" @@ -2578,9 +2586,8 @@ msgid "Assign..." msgstr "Aseta..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "Virheellinen polku" +msgstr "Virheellinen RID" #: editor/editor_properties.cpp msgid "" @@ -3293,6 +3300,23 @@ msgstr "Esiasetus..." msgid "Reimport" msgstr "Tuo uudelleen" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "Tallenna skenet, tuo uudelleen ja käynnistä uudelleen" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" +"Tuodun tiedoston tyypin muuttaminen edellyttää editorin " +"uudelleenkäynnistystä." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"VAROITUS: Tällä resurssilla on sitä käyttäviä assetteja, ne voivat lakata " +"latautumasta kunnolla." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Resurssin lataaminen epäonnistui." @@ -4254,6 +4278,19 @@ msgid "Move CanvasItem" msgstr "Siirrä CanvasItemiä" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"Varoitus: Säilön alisolmujen sijainti ja koko määrittyy vain niiden " +"isäntäsolmun perusteella." + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Vain ankkurit" @@ -5166,28 +5203,24 @@ msgid "Create Polygon & UV" msgstr "Luo polygoni ja UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Luo uusi vaakasuora apuviiva" +msgstr "Luo sisäinen kärkipiste" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "Poista tulo-ohjaimen piste" +msgstr "Poista sisäinen kärkipiste" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "Virheellinen polygoni (tarvitaan 3 eri kärkipistettä)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Muokkaa polygonia" +msgstr "Lisää mukautettu polygoni" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Poista törmäyspolygoni" +msgstr "Poista mukautettu polygoni" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5214,14 +5247,12 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Piste" +msgstr "Pisteet" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "Polygoni->UV" +msgstr "Polygonit" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -5258,12 +5289,15 @@ msgstr "Skaalaa polygonia" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." msgstr "" +"Luo mukautettu polygoni. Kytkee päälle mukautettujen polygonien piirron." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"Poista mukautettu polygoni. Jos yhtään ei jää jäljelle, mukautettujen " +"polygonien piirto poistetaan päältä." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -6203,7 +6237,7 @@ msgstr "Siirrettäessä:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" -msgstr "Käännettäessä (aste):" +msgstr "Käännettäessä (asteina):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" @@ -6215,7 +6249,7 @@ msgstr "Näyttöruudun asetukset" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective FOV (deg.):" -msgstr "Näkökentän perspektiivi (ast.):" +msgstr "Näkökentän perspektiivi (asteina):" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Z-Near:" @@ -6235,7 +6269,7 @@ msgstr "Siirrä:" #: editor/plugins/spatial_editor_plugin.cpp msgid "Rotate (deg.):" -msgstr "Kierrä (ast.):" +msgstr "Kierrä (asteina):" #: editor/plugins/spatial_editor_plugin.cpp msgid "Scale (ratio):" @@ -6254,7 +6288,8 @@ msgid "Post" msgstr "Jälki" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +#, fuzzy +msgid "Nameless gizmo" msgstr "Nimetön muokkain" #: editor/plugins/sprite_editor_plugin.cpp @@ -6330,10 +6365,16 @@ msgid "(empty)" msgstr "(tyhjä)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animaatiot" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animaatio" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Nopeus (FPS):" @@ -6342,7 +6383,8 @@ msgid "Loop" msgstr "Toista" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Animaatioruudut" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7096,6 +7138,47 @@ msgid "Browse" msgstr "Selaa" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "Renderöijä:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"Korkea visuaalinen laatu\n" +"Kaikki ominaisuudet käytettävissä\n" +"Epäyhteensopiva vanhojen laitteiden kanssa\n" +"Ei suositeltu web-peleille" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 2.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"Matalampi visuaalinen laatu\n" +"Jotkin ominaisuudet eivät ole käytettävissä\n" +"Toimii useimmilla laitteilla\n" +"Suositeltu web-peleille" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" +"Renderöijä voidaan vaihtaa myöhemmin, mutta skenejä voi joutua mukauttamaan." + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Nimetön projekti" @@ -7108,6 +7191,27 @@ msgid "Are you sure to open more than one project?" msgstr "Haluatko varmasti avata useamman kuin yhden projektin?" #: editor/project_manager.cpp +#, fuzzy +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"Seuraava projektin asetustiedosto on luotu vanhemmalla versiolla ja täytyy " +"muuntaa tätä versiota varten:\n" +"\n" +"%s\n" +"\n" +"Haluatko muuntaa sen?\n" +"Varoitus: et voi avata projektia tämän jälkeen enää vanhemmilla versioilla." + +#: editor/project_manager.cpp msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -7816,6 +7920,22 @@ msgid "Duplicate Node(s)" msgstr "Kahdenna solmu(t)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" +"Perittyjen skenejen solmujen isäntää ei voi vaihtaa, solmujen järjestys ei " +"voi muuttua." + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" +"Solmun täytyy kuulua muokattavana olevaan skeneen, jotta se voidaan asettaa " +"juureksi." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "Skenejen ilmentymiä ei voi asettaa juureksi" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Poista solmu(t)?" @@ -8624,10 +8744,6 @@ msgid "Build Project" msgstr "Käännä projekti" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Varoitukset" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Näytä loki" @@ -9029,6 +9145,88 @@ msgstr "Hae %s" msgid "Set %s" msgstr "Aseta %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "Paketin nimi puuttuu." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "Paketin osioiden pituuksien täytyy olla nollasta poikkeavia." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "Merkki '%s' ei ole sallittu Android-sovellusten pakettien nimissä." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "Paketin osion ensimmäinen merkki ei voi olla numero." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "Merkki '%s' ei voi olla paketin osion ensimmäinen merkki." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "Paketilla on oltava ainakin yksi '.' erotinmerkki." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "ADB käynnistystiedostoa ei ole määritetty editorin asetuksissa." + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "OpenJDK jarsigner ei ole määritettynä editorin asetuksissa." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" +"Debug keystore ei ole määritettynä editorin asetuksissa eikä esiasetuksissa." + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "Virheellinen julkinen avain APK-laajennosta varten." + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "Virheellinen paketin nimi:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "Tunniste puuttuu." + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "Tunnisteen osiot eivät voi olla nollan pituisia." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "Merkki '%s' ei ole sallittu Identifier osiossa." + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "Identifier osion ensimmäinen merkki ei voi olla numero." + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "Merkki '%s' ei voi olla Identifier osion ensimmäinen merkki." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "Identifier osiossa täytyy olla vähintään yksi '.' erotinmerkki." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "App Store Team ID ei ole määritetty - ei voida konfiguroida projektia." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "Virheellinen Identifier osio:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "Vaadittavaa ikonia ei ole määritetty esiasetuksissa." + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Suorita selaimessa" @@ -9061,6 +9259,52 @@ msgstr "Ei voitu lukea käynnistyskuvan tiedostoa:" msgid "Using default boot splash image." msgstr "Käytetään oletuskäynnistyskuvaa." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "Paketin yksilöllinen nimi on virheellinen." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "Tuotteen GUID (yleisesti yksilöllinen tunniste) on virheellinen." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "Julkaisijan GUID (yleisesti yksilöllinen tunniste) on virheellinen." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Virheellinen taustaväri." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Virheellinen Store Logo kuvan koko (pitäisi olla 50x50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "Virheellinen neliömäisen 44x44 logon kuvakoko (pitäisi olla 44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "Virheellinen neliömäisen 71x71 logon kuvakoko (pitäisi olla 71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" +"Virheellinen neliömäisen 150x150 logon kuvakoko (pitäisi olla 150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" +"Virheellinen neliömäisen 310x310 logon kuvakoko (pitäisi olla 310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "Virheellinen leveän 310x150 logon kuvakoko (pitäisi olla 310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Virheellinen käynnistyskuvan kuvakoko (pitäisi olla 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9169,6 +9413,13 @@ msgstr "" "ParallaxLayer solmu toimii ainoastaan, jos se on ParallaxBackground solmun " "alla." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9360,6 +9611,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "Mitään ei näy, koska mesheille ei ole asetettu piirtopyyhkäisyjä (draw " @@ -9378,17 +9636,12 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow toimii ainoastaan ollessaan asetettuna Path solmun alle." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"OrientedPathFollow toimii ainoastaan ollessaan asetettuna Path solmun alle." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" -"OrientedPathFollow edellyttää, että sen Path isäntäsolmun Curve resurssin " -"\"Up Vector\" on asetettu päälle." +"PathFollow ROTATION_ORIENTED edellyttää, että sen Path isäntäsolmun Curve " +"resurssin \"Up Vector\" on asetettu päälle." #: scene/3d/physics_body.cpp msgid "" @@ -9496,10 +9749,18 @@ msgstr "" "Tämä solmu on poistettu käytöstä. Käytä sen sijaan AnimationTree solmua." #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Raakatila" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Lisää nykyinen väri esiasetukseksi" @@ -9595,6 +9856,23 @@ msgstr "Sijoitus uniformille." msgid "Varyings can only be assigned in vertex function." msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." +#~ msgid "Warnings:" +#~ msgstr "Varoitukset:" + +#~ msgid "Font Size:" +#~ msgstr "Fontin koko:" + +#~ msgid "Line:" +#~ msgstr "Rivi:" + +#~ msgid "Col:" +#~ msgstr "Sarake:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "OrientedPathFollow toimii ainoastaan ollessaan asetettuna Path solmun " +#~ "alle." + #~ msgid "Split point with itself." #~ msgstr "Jaa piste itsellään." @@ -9607,9 +9885,6 @@ msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." #~ msgid "Add Split" #~ msgstr "Lisää jako" -#~ msgid "Invalid Split: " -#~ msgstr "Virheellinen jako: " - #~ msgid "Remove Split" #~ msgstr "Poista jako" @@ -10599,9 +10874,6 @@ msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." #~ msgid "Error creating the signature object." #~ msgstr "Virhe luotaessa allekirjoitusoliota." -#~ msgid "Invalid background color." -#~ msgstr "Virheellinen taustaväri." - #~ msgid "Node From Scene" #~ msgstr "Node Scenestä" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index efea23d4bd..94283dc2cd 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -10,7 +10,7 @@ # Cindy Dallaire <c.dallaire93@gmail.com>, 2018. # derderder77 <derderder77380@gmail.com>, 2016. # finkiki <specialpopol@gmx.fr>, 2016. -# Gilles Roudiere <gilles.roudiere@gmail.com>, 2017-2018. +# Gilles Roudiere <gilles.roudiere@gmail.com>, 2017-2018, 2019. # Hugo Locurcio <hugo.l@openmailbox.org>, 2016-2018. # Javier Ocampos <xavier.ocampos@gmail.com>, 2018. # John Bernier <john.bp@unknit.net>, 2018. @@ -50,14 +50,15 @@ # Florent Wijanto <f_wijanto@hotmail.com>, 2018. # Olivier gareau <olivier.gareau@protonmail.com>, 2018. # Rémi Verschelde <akien@godotengine.org>, 2018, 2019. -# Rémi Bintein <reminus5@hotmail.fr>, 2018. +# Rémi Bintein <reminus5@hotmail.fr>, 2018, 2019. # Sylvain Corsini <sylvain.corsini@gmail.com>, 2018. +# Caye Pierre <pierrecaye@laposte.net>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:07+0000\n" -"Last-Translator: Hugo Locurcio <hugo.locurcio@hugo.pro>\n" +"PO-Revision-Date: 2019-02-10 13:16+0100\n" +"Last-Translator: Caye Pierre <pierrecaye@laposte.net>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -65,7 +66,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Poedit 2.2.1\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -81,7 +82,7 @@ msgstr "Pas assez d'octets pour les octets de décodage, ou format non valide." #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" -msgstr "Entrée non valide %i (non passée) dans l’expression" +msgstr "Entrée non valide %i (non passée) dans l'expression" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" @@ -439,7 +440,7 @@ msgstr "Mettre à l'échelle la sélection" #: editor/animation_track_editor.cpp msgid "Scale From Cursor" -msgstr "Mettre à l’échelle depuis le curseur" +msgstr "Mettre à l'échelle depuis le curseur" #: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp msgid "Duplicate Selection" @@ -597,21 +598,13 @@ msgstr "Dézoomer" msgid "Reset Zoom" msgstr "Réinitialiser le zoom" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Avertissements :" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Taille de police :" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Ligne :" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Avertissements" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Colonne :" +msgid "Line and column numbers" +msgstr "Numéros de ligne et de colonne" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -914,8 +907,8 @@ msgstr "Supprimer les fichiers sélectionnés ?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Supprimer" @@ -1342,9 +1335,25 @@ msgid "Storing File:" msgstr "Stockage du fichier :" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "Aucun modèle d'exportation n'a été trouvé au chemin prévu :" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Empaquetage" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "Modèle de débogage personnalisé introuvable." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "Modèle de version personnalisée introuvable." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Fichier modèle introuvable :" @@ -2013,7 +2022,7 @@ msgstr "Choisir une scène principale" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." msgstr "" -"Impossible d'activer le greffon depuis : '%s' l’analyse syntaxique de la " +"Impossible d'activer le greffon depuis : '%s' l'analyse syntaxique de la " "configuration a échoué." #: editor/editor_node.cpp @@ -2025,14 +2034,14 @@ msgstr "" #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s'." msgstr "" -"Impossible de charger le script de l’extension depuis le chemin : '%s'." +"Impossible de charger le script de l'extension depuis le chemin : '%s'." #: editor/editor_node.cpp msgid "" "Unable to load addon script from path: '%s' There seems to be an error in " "the code, please check the syntax." msgstr "" -"Impossible de charger le script de l’extension depuis le chemin : '%s' Il " +"Impossible de charger le script de l'extension depuis le chemin : '%s' Il " "semble y avoir une erreur dans le code, merci de vérifier la syntaxe." #: editor/editor_node.cpp @@ -2045,7 +2054,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s' Script is not in tool mode." msgstr "" -"Impossible de charger le script de l’extension depuis le chemin : '%s' Le " +"Impossible de charger le script de l'extension depuis le chemin : '%s' Le " "script n'est pas en mode outil." #: editor/editor_node.cpp @@ -2916,7 +2925,7 @@ msgstr "" #: editor/export_template_manager.cpp msgid "Error requesting url: " -msgstr "Erreur lors de la requête de l’URL : " +msgstr "Erreur lors de la requête de l'URL : " #: editor/export_template_manager.cpp msgid "Connecting to Mirror..." @@ -3377,6 +3386,22 @@ msgstr "Pré-réglage…" msgid "Reimport" msgstr "Ré-importer" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "Sauvegarde des scènes, réimportation et redémarrage" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" +"Changer le type d'un fichier importé nécessite un redémarrage de l'éditeur." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"AVERTISSEMENT : Il existe des éléments qui utilisent cette ressource, ils " +"pourraient cesser de charger correctement." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Impossible de charger la ressource." @@ -4346,6 +4371,18 @@ msgid "Move CanvasItem" msgstr "Déplacer l'élément de canevas" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "Préréglages pour les ancres et les marges d'un nÅ“ud Control." + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"Les nÅ“uds enfants de conteneurs ont leurs ancres et marges redéfinies par " +"leur parent." + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Uniquement les ancres" @@ -4561,7 +4598,7 @@ msgstr "Afficher le Viewport" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Group And Lock Icons" -msgstr "Montrer le groupe et verrouiller les icônes" +msgstr "Montrer les icônes de groupe et de verrouillage" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -4651,7 +4688,7 @@ msgstr "Définir la poignée" #: editor/plugins/cpu_particles_editor_plugin.cpp msgid "CPUParticles" -msgstr "ParticulesCPU" +msgstr "CPUParticles" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -5020,7 +5057,7 @@ msgstr "Effacer Masque d'Émission" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp msgid "Convert to CPUParticles" -msgstr "Convertir en ParticulesCPU" +msgstr "Convertir en CPUParticles" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -6350,7 +6387,7 @@ msgid "Post" msgstr "Post" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "Gadget sans nom" #: editor/plugins/sprite_editor_plugin.cpp @@ -6428,8 +6465,12 @@ msgid "(empty)" msgstr "(vide)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "Animations" +msgid "Animations:" +msgstr "Animations :" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" +msgstr "Nouvelle animation" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6440,8 +6481,8 @@ msgid "Loop" msgstr "Boucle" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "Trames d'animation" +msgid "Animation Frames:" +msgstr "Trames d'animation :" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7197,6 +7238,48 @@ msgid "Browse" msgstr "Parcourir" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "Moteur de rendu :" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"Meilleure qualité visuelle\n" +"Toutes les fonctions disponibles\n" +"Incompatible avec du matériel plus ancien\n" +"Non recommandé pour les jeux web" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 2.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"Qualité visuelle inférieure\n" +"Certaines fonctions ne sont pas disponibles\n" +"Fonctionne sur la plupart du matériel\n" +"Recommandé pour les jeux en ligne" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" +"Le rendu peut être modifié ultérieurement, mais les scènes peuvent avoir " +"besoin d'être ajustées." + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projet sans titre" @@ -7210,6 +7293,28 @@ msgstr "Voulez-vous vraiment ouvrir plus d'un projet à la fois ?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"Le fichier de configuration de projet ci-dessous n'indique pas par quelle " +"version de Godot il a été généré.\n" +"\n" +"%s\n" +"\n" +"Si vous choisissez de l'ouvrir, il sera converti vers l'actuel format de " +"fichier de configuration de Godot.\n" +"Attention : Il ne sera plus possible d'ouvrir ce projet avec les précédentes " +"versions du moteur." + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7924,6 +8029,20 @@ msgid "Duplicate Node(s)" msgstr "Dupliquer le(s) nÅ“ud(s)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" +"Impossible de reparenter les nÅ“uds dans les scènes héritées, l'ordre des " +"nÅ“uds ne peut pas changer." + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "Le nÅ“ud doit appartenir à la scène éditée pour devenir la racine." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "Les scènes instanciées ne peuvent pas devenir la racine" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Supprimer le(s) nÅ“ud(s) ?" @@ -8479,7 +8598,7 @@ msgstr "Sélectionnez les dépendances de la librairie pour cette entrée" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Remove current entry" -msgstr "Supprimer l’entrée" +msgstr "Supprimer l'entrée" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Double click to create a new entry" @@ -8734,10 +8853,6 @@ msgid "Build Project" msgstr "Compiler le projet" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Avertissements" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Voir les fichiers log" @@ -9141,6 +9256,99 @@ msgstr "Obtenir %s" msgid "Set %s" msgstr "Définir %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "Nom du paquet manquant." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "Les segments du paquet doivent être de longueur non nulle." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" +"Le caractère '%s' n'est pas autorisé dans les noms de paquet d'applications " +"Android." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" +"Un chiffre ne peut pas être le premier caractère d'un segment de paquet." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" +"Le caractère \"%s\" ne peut pas être le premier caractère d'un segment de " +"paquet." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "Le paquet doit comporter au moins un séparateur '.'." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "L'exécutable ADB n'est pas configuré dans les paramètres de l'éditeur." + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" +"OpenJDK jarsigner n'est pas configuré dans les paramètres de l'éditeur." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" +"Debug keystore n'est pas configuré dans les paramètres de l'éditeur ni dans " +"le préréglage." + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "Clé publique invalide pour l'expansion APK." + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "Nom de paquet invalide :" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "L'identifiant est manquant." + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" +"Les segments de l'identifiant doivent être d'une longueur différente de zéro." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "Le caractère'%s' n'est pas autorisé dans l'identifiant." + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" +"Un chiffre ne peut pas être le premier caractère d'un segment d'identifiant." + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" +"Le caractère'%s' ne peut pas être le premier caractère d'un segment " +"d'identifiant." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "L'identifiant doit avoir au moins un séparateur '.'." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "App Store Team ID non spécifié - ne peut pas configurer le projet." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "Identifiant invalide :" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "L'icône requise n'est pas spécifiée dans le préréglage." + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Exécuter dans le navigateur" @@ -9173,6 +9381,63 @@ msgstr "Impossible de lire l'image de démarrage :" msgid "Using default boot splash image." msgstr "Impossible de lire l'image de démarrage." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "Nom unique de paquet invalide." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "GUID produit invalide." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "GUID éditeur invalide." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Couleur de fond invalide." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" +"Les dimensions de l'image du logo du magasin ne sont pas valides (doit être " +"50x50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" +"Les dimensions de l'image du logo carré 44x44 sont invalides (doivent être " +"44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" +"Les dimensions de l'image du logo carré 71x71 sont invalides (doivent être " +"71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" +"Les dimensions de l'image du logo carré 150x150 sont invalides (doivent être " +"150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" +"Les dimensions de l'image du logo carré 310x310 sont invalides (doivent être " +"310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" +"Les dimensions de l'image du logo large sont invalides (doivent être de " +"310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" +"Les dimensions du splash screen sont invalides (doivent être de 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9238,7 +9503,7 @@ msgid "" "\"Particles Animation\" enabled." msgstr "" "L'animation de CPUParticles2D a besoin d'un CanvasItemMaterial avec " -"\"Animation de Particules\" activé." +"\"Particles Animation\" activé." #: scene/2d/light_2d.cpp msgid "" @@ -9285,6 +9550,17 @@ msgstr "" "Le nÅ“ud ParallaxLayer ne fonctionne que s'il est défini en tant qu'enfant " "d'un nÅ“ud de type ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" +"Les particules de type GPU ne sont pas supportées par le pilote graphique " +"GLES2.\n" +"Utilisez le nÅ“ud CPUParticles2D à la place. Vous pouvez utiliser l'option « " +"Convertir en CPUParticles » pour ce faire." + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9477,6 +9753,17 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" +"Les particules de type GPU ne sont pas supportées par le pilote graphique " +"GLES2.\n" +"Utilisez le nÅ“ud CPUParticles à la place. Vous pouvez utiliser l'option « " +"Convertir en CPUParticles » pour ce faire." + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "Rien n'est visible car les maillages n'ont pas été assignés au tirage des " @@ -9497,18 +9784,12 @@ msgstr "" "nÅ“ud de type Path." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"Le nÅ“ud OrientedPathFollow ne fonctionne que s'il est défini en tant qu'un " -"enfant d'un nÅ“ud de type Path." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" -"OrientedPathFollow requiert l'activation de la propriété \"Up Vector\" de la " -"ressource Curve de son Path parent." +"PathFollow ROTATION_ORIENTED nécessite l'activation de \"Up Vector\" dans la " +"ressource Path's Curve de son parent." #: scene/3d/physics_body.cpp msgid "" @@ -9619,10 +9900,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "Ce nÅ“ud est désormais déprécié. Utilisez AnimationTree à la place." #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "Échantillonner une couleur depuis l'écran." + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Mode brut" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "Alterner entre les valeurs hexadécimales ou brutes." + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Ajouter la couleur courante comme pré-réglage" @@ -9720,6 +10009,23 @@ msgstr "Affectation à l'uniforme." msgid "Varyings can only be assigned in vertex function." msgstr "Les variations ne peuvent être affectées que dans la fonction vertex." +#~ msgid "Warnings:" +#~ msgstr "Avertissements :" + +#~ msgid "Font Size:" +#~ msgstr "Taille de police :" + +#~ msgid "Line:" +#~ msgstr "Ligne :" + +#~ msgid "Col:" +#~ msgstr "Colonne :" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "Le nÅ“ud OrientedPathFollow ne fonctionne que s'il est défini en tant " +#~ "qu'un enfant d'un nÅ“ud de type Path." + #~ msgid "Split point with itself." #~ msgstr "Point de séparation avec lui-même." @@ -9732,9 +10038,6 @@ msgstr "Les variations ne peuvent être affectées que dans la fonction vertex." #~ msgid "Add Split" #~ msgstr "Ajouter un fractionnement" -#~ msgid "Invalid Split: " -#~ msgstr "Fractionnement invalide : " - #~ msgid "Remove Split" #~ msgstr "Supprimer le fractionnement" diff --git a/editor/translations/he.po b/editor/translations/he.po index e479ef9d66..847c0f6a93 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -561,23 +561,13 @@ msgstr "להתרחק" msgid "Reset Zoom" msgstr "×יפוס התקריב" -#: editor/code_editor.cpp -#, fuzzy -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "×זהרות" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "מבט קדמי" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "שורה:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "עמודה:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -876,8 +866,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "למחוק" @@ -1295,9 +1285,26 @@ msgid "Storing File:" msgstr "קובץ ×חסון:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "×ריזה" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "קובץ ×”×ª×‘× ×™×ª ×œ× × ×ž×¦×:" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "קובץ ×”×ª×‘× ×™×ª ×œ× × ×ž×¦×:" @@ -3287,6 +3294,19 @@ msgstr "ערכה מוגדרת…" msgid "Reimport" msgstr "×™×™×‘×•× ×ž×—×“×©" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "×˜×¢×™× ×ª המש×ב × ×›×©×œ×”." @@ -4257,6 +4277,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6292,7 +6322,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6372,10 +6402,16 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "×× ×™×ž×¦×™×•×ª" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "×©× ×”× ×¤×©×” חדשה:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "מהירות (FPS):" @@ -6384,7 +6420,8 @@ msgid "Loop" msgstr "לול××”" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "שקופיות ×”×”× ×¤×©×”" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7151,6 +7188,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7165,6 +7234,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7861,6 +7943,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8660,10 +8754,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "×זהרות" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -9055,6 +9145,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "×©× ×©×’×•×™." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "גודל הגופן שגוי." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "הפעלה בדפדפן" @@ -9087,6 +9260,54 @@ msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×§×•×‘×¥ ×ª×ž×•× ×ª פתיח:" msgid "Using default boot splash image." msgstr "× ×¢×©×” שימוש ×‘×ª×ž×•× ×ª הפתיח כבררת מחדל." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "×©× ×©×’×•×™." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "×©× ×©×’×•×™." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "× ×ª×™×‘ שגוי." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "×©× ×©×’×•×™." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9169,6 +9390,13 @@ msgid "" msgstr "" "מפרק ParallaxLayer עובד רק ×›×שר ×”×•× ×ž×•×’×“×¨ כצ××¦× ×©×œ מפרק ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9324,6 +9552,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9339,14 +9574,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow2D עובד רק ×›×שר ×”×•× ×ž×•×’×“×¨ כצ××¦× ×©×œ מפרק Path2D." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D עובד רק ×›×שר ×”×•× ×ž×•×’×“×¨ כצ××¦× ×©×œ מפרק Path2D." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9441,10 +9671,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "מצב גולמי" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "הוספת הצבע ×”× ×•×›×—×™ כערכה" @@ -9530,12 +9768,26 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy -#~ msgid "Split already exists." -#~ msgstr "הפעולה ‚%s’ כבר קיימת!" +#~ msgid "Warnings:" +#~ msgstr "×זהרות" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "× ×ª×™×‘ שגוי." +#~ msgid "Font Size:" +#~ msgstr "מבט קדמי" + +#~ msgid "Line:" +#~ msgstr "שורה:" + +#~ msgid "Col:" +#~ msgstr "עמודה:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "PathFollow2D עובד רק ×›×שר ×”×•× ×ž×•×’×“×¨ כצ××¦× ×©×œ מפרק Path2D." + +#, fuzzy +#~ msgid "Split already exists." +#~ msgstr "הפעולה ‚%s’ כבר קיימת!" #, fuzzy #~ msgid "Remove Split" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index 80a6607522..dbe94f2a68 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -544,22 +544,14 @@ msgstr "छोटा करो" msgid "Reset Zoom" msgstr "रीसेट आकार" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -msgid "Line:" -msgstr "रेखा:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "सà¥à¤¤à¤‚à¤:" - #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" msgstr "लकà¥à¤·à¥à¤¯ नोड में विधि निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ किया जाना चाहिà¤!" @@ -877,8 +869,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "को हटा दें" @@ -1308,9 +1300,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3253,6 +3261,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4200,6 +4221,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6195,7 +6226,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6272,8 +6303,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "कारà¥à¤¯à¥‹à¤‚:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "à¤à¤¨à¤¿à¤®à¥‡à¤¶à¤¨ लूप" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6284,7 +6321,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7034,6 +7071,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7047,6 +7116,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7728,6 +7810,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8519,10 +8613,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8910,6 +9000,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "गलत फॉणà¥à¤Ÿ का आकार |" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "गलत फॉणà¥à¤Ÿ का आकार |" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8942,6 +9115,53 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "गलत फॉणà¥à¤Ÿ का आकार |" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "गलत फॉणà¥à¤Ÿ का आकार |" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "गलत फॉणà¥à¤Ÿ का आकार |" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9023,6 +9243,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9178,6 +9405,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9192,13 +9426,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9293,10 +9523,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9381,6 +9619,12 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Line:" +#~ msgstr "रेखा:" + +#~ msgid "Col:" +#~ msgstr "सà¥à¤¤à¤‚à¤:" + #, fuzzy #~ msgid "Remove Split" #~ msgstr "मिटाना" diff --git a/editor/translations/hr.po b/editor/translations/hr.po index d69409b615..c2b57f480e 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -531,20 +531,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -838,8 +830,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1256,9 +1248,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3176,6 +3184,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4112,6 +4133,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6088,7 +6119,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6164,7 +6195,11 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +msgid "Animations:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6176,7 +6211,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6907,6 +6942,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6920,6 +6987,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7598,6 +7678,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8384,10 +8476,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8775,6 +8863,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8807,6 +8976,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8888,6 +9101,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9043,6 +9263,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9057,13 +9284,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9156,10 +9379,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index 9cf7cd6942..7295912160 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -565,22 +565,13 @@ msgstr "KicsinyÃtés" msgid "Reset Zoom" msgstr "NagyÃtás VisszaállÃtása" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Körvonal Mérete:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Sor:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Oszlop:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -888,8 +879,8 @@ msgstr "Törli a kiválasztott fájlokat?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Törlés" @@ -1312,9 +1303,26 @@ msgid "Storing File:" msgstr "Tároló Fájl:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Csomagolás" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Sablon fájl nem található:" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Sablon fájl nem található:" @@ -3387,6 +3395,19 @@ msgstr "BeépÃtett BeállÃtások..." msgid "Reimport" msgstr "Újraimportálás" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Nem sikerült betölteni az erÅ‘forrást." @@ -4381,6 +4402,16 @@ msgid "Move CanvasItem" msgstr "CanvasItem Szerkesztése" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Csak Horgonyok" @@ -6433,7 +6464,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6514,8 +6545,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Animáció" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animáció" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6526,8 +6563,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Animáció Neve:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7295,6 +7333,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7309,6 +7379,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7999,6 +8082,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8802,10 +8897,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Fájlok Megtekintése" @@ -9204,6 +9295,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Érvénytelen név." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Érvénytelen betűtÃpus méret." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9236,6 +9410,54 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Érvénytelen név." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Érvénytelen projektnév." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Érvénytelen Elérési Út." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Érvénytelen név." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9317,6 +9539,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9472,6 +9701,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9486,13 +9722,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9592,10 +9824,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9686,6 +9926,16 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Körvonal Mérete:" + +#~ msgid "Line:" +#~ msgstr "Sor:" + +#~ msgid "Col:" +#~ msgstr "Oszlop:" + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "Már létezik '%s' AutoLoad!" @@ -9694,10 +9944,6 @@ msgstr "" #~ msgstr "Pont hozzáadása" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "Érvénytelen Elérési Út." - -#, fuzzy #~ msgid "Remove Split" #~ msgstr "Pont eltávolÃtása" diff --git a/editor/translations/id.po b/editor/translations/id.po index 056ab1d3ce..ca6c019a2d 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -561,22 +561,13 @@ msgstr "Perkecil Pandangan" msgid "Reset Zoom" msgstr "Kebalikan Semula Pandangan" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Peringatan:" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Tampilan Depan." - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Baris:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Kolom:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -881,8 +872,8 @@ msgstr "Hapus file yang dipilih?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Hapus" @@ -1307,9 +1298,26 @@ msgid "Storing File:" msgstr "Menyimpan File:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Mengemas" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Templat berkas tidak ditemukan:" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Templat berkas tidak ditemukan:" @@ -3383,6 +3391,20 @@ msgstr "Prasetel..." msgid "Reimport" msgstr "Impor ulang" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +#, fuzzy +msgid "Changing the type of an imported file requires editor restart." +msgstr "Mengubah driver video harus memulai ulang editor." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Gagal memuat resource." @@ -4398,6 +4420,16 @@ msgid "Move CanvasItem" msgstr "Sunting CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6468,7 +6500,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6548,8 +6580,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Animasi" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animasi" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6560,8 +6598,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Nama Animasi:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7353,6 +7392,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7368,6 +7439,19 @@ msgstr "Apakah Anda yakin membuka lebih dari satu projek?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8083,6 +8167,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8925,10 +9021,6 @@ msgid "Build Project" msgstr "Proyek" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "File:" @@ -9351,6 +9443,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Nama tidak sah." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Nama bukan sebuah pengidentifikasi yang sah:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Nama bukan sebuah pengidentifikasi yang sah:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9389,6 +9565,54 @@ msgstr "Tidak dapat membuat folder." msgid "Using default boot splash image." msgstr "Tidak dapat membuat folder." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Nama tidak sah." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Ukuran font tidak sah." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Ukuran font tidak sah." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Nama tidak sah." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9496,6 +9720,13 @@ msgstr "" "Node ParallaxLayer hanya bekerja ketika diatur sebagai child dari sebuah " "node ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9670,6 +9901,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9687,16 +9925,9 @@ msgstr "" "node Path2D." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D hanya bekerja ketika diatur sebagai sebuah child dari sebuah " -"node Path2D." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9800,10 +10031,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Tambahkan warna yang sekarang sebagai preset" @@ -9900,6 +10139,25 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Warnings:" +#~ msgstr "Peringatan:" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Tampilan Depan." + +#~ msgid "Line:" +#~ msgstr "Baris:" + +#~ msgid "Col:" +#~ msgstr "Kolom:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D hanya bekerja ketika diatur sebagai sebuah child dari sebuah " +#~ "node Path2D." + #, fuzzy #~ msgid "Split already exists." #~ msgstr "Autoload '%s' telah ada!" @@ -10325,14 +10583,6 @@ msgstr "" #~ "Buka Manajer Proyek?\n" #~ "(Perubahan yang tidak disimpan akan hilang)" -#, fuzzy -#~ msgid "Invalid unique name." -#~ msgstr "Nama tidak sah." - -#, fuzzy -#~ msgid "Invalid product GUID." -#~ msgstr "Ukuran font tidak sah." - #~ msgid "Node From Scene" #~ msgstr "Node Dari Scene" diff --git a/editor/translations/is.po b/editor/translations/is.po index 56b954046e..8691577785 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -552,20 +552,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -859,8 +851,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1277,9 +1269,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3200,6 +3208,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4140,6 +4161,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6119,7 +6150,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6195,7 +6226,12 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "Stillið breyting á:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6207,7 +6243,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6950,6 +6986,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6963,6 +7031,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7645,6 +7726,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8433,10 +8526,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8824,6 +8913,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8856,6 +9026,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8937,6 +9151,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9092,6 +9313,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9106,13 +9334,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9205,10 +9429,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/it.po b/editor/translations/it.po index 66eed4d2aa..3c5593bd43 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -24,12 +24,15 @@ # Nicola Gramola <nicola.gramola@gmail.com>, 2018. # Davide Wayan Mores <moresdavidewayan@gmail.com>, 2018. # Alessandro Zoppi <alessandro.zoppi@live.it>, 2019. +# Hairic95 <hairic95@gmail.com>, 2019. +# Christian Biffi <creixx@virgilio.it>, 2019. +# Giuseppe Guerra <me@nyodev.xyz>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-04 04:09+0000\n" -"Last-Translator: Alessandro Zoppi <alessandro.zoppi@live.it>\n" +"PO-Revision-Date: 2019-01-26 13:31+0000\n" +"Last-Translator: Giuseppe Guerra <me@nyodev.xyz>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" "godot/it/>\n" "Language: it\n" @@ -37,7 +40,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -92,9 +95,8 @@ msgid "Balanced" msgstr "Bilanciato" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Mirror" -msgstr "Specchia X" +msgstr "Specchia" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" @@ -144,7 +146,7 @@ msgstr "Proprietà :" #: editor/animation_track_editor.cpp #, fuzzy msgid "3D Transform Track" -msgstr "Tipo Transform" +msgstr "Trasformazione 3D" #: editor/animation_track_editor.cpp msgid "Call Method Track" @@ -152,7 +154,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" -msgstr "" +msgstr "Traccia Curva di Bezier" #: editor/animation_track_editor.cpp msgid "Audio Playback Track" @@ -164,19 +166,16 @@ msgid "Animation Playback Track" msgstr "Ferma il playback dell'animazione. (S)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Track" -msgstr "Anim Aggiungi Traccia" +msgstr "Aggiungi Traccia" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation Length Time (seconds)" -msgstr "Lunghezza animazone (in secondi)." +msgstr "Durata animazione (in secondi)" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation Looping" -msgstr "Zoom Animazione." +msgstr "Ripeti Animazione" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -194,9 +193,8 @@ msgid "Anim Clips:" msgstr "Clips" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Toggle this track on/off." -msgstr "Abilita modalità senza distrazioni." +msgstr "Attiva/Disattiva la traccia." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" @@ -212,14 +210,12 @@ msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" msgstr "" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Remove this track." -msgstr "Rimuovi traccia selezionata." +msgstr "Rimuovi questa traccia." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Time (s): " -msgstr "Tempo(i) di Crossfade:" +msgstr "Tempo (s): " #: editor/animation_track_editor.cpp msgid "Continuous" @@ -234,13 +230,13 @@ msgid "Trigger" msgstr "Attivazione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Capture" -msgstr "Texture" +msgstr "Cattura" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Nearest" -msgstr "" +msgstr "Più vicino" #: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp #: editor/property_editor.cpp @@ -249,7 +245,7 @@ msgstr "Lineare" #: editor/animation_track_editor.cpp msgid "Cubic" -msgstr "" +msgstr "Cubico" #: editor/animation_track_editor.cpp #, fuzzy @@ -355,7 +351,7 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy msgid "Method not found in object: " -msgstr "VariableGet non trovato nello script: " +msgstr "Metodo non trovato nell'oggetto: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" @@ -364,7 +360,7 @@ msgstr "Anim Sposta Key" #: editor/animation_track_editor.cpp #, fuzzy msgid "Clipboard is empty" -msgstr "Clipboard risorse vuota!" +msgstr "Gli appunti sono vuoti" #: editor/animation_track_editor.cpp msgid "Anim Scale Keys" @@ -403,9 +399,8 @@ msgid "Edit" msgstr "Modifica" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation properties." -msgstr "AnimazioneAlbero" +msgstr "Proprietà animazione." #: editor/animation_track_editor.cpp #, fuzzy @@ -434,19 +429,16 @@ msgid "Duplicate Transposed" msgstr "Duplica Transposto" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Delete Selection" -msgstr "Elimina selezionati" +msgstr "Elimina la selezione" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Next Step" -msgstr "Vai a Step Successivo" +msgstr "Vai allo Step Successivo" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Go to Previous Step" -msgstr "Vai a Step Precedente" +msgstr "Vai allo Step Precedente" #: editor/animation_track_editor.cpp msgid "Optimize Animation" @@ -584,23 +576,14 @@ msgstr "Zoom Out" msgid "Reset Zoom" msgstr "Resetta Zoom" -#: editor/code_editor.cpp +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp #, fuzzy -msgid "Warnings:" +msgid "Warnings" msgstr "Avvertimento" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Dimensione Font sorgente:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Riga:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Col:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -700,17 +683,15 @@ msgstr "Disconnetti" #: editor/connections_dialog.cpp #, fuzzy msgid "Connect Signal: " -msgstr "Connessione Segnali:" +msgstr "Connetti il segnale: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit Connection: " -msgstr "Modifica Connessioni" +msgstr "Modifica Connessione: " #: editor/connections_dialog.cpp -#, fuzzy msgid "Are you sure you want to remove all connections from the \"%s\" signal?" -msgstr "Sei sicuro di voler eseguire più di un progetto?" +msgstr "Sei sicuro di voler rimuovere tutte le connessioni dal segnale \"%s\"?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" @@ -721,9 +702,8 @@ msgid "Are you sure you want to remove all connections from this signal?" msgstr "" #: editor/connections_dialog.cpp -#, fuzzy msgid "Disconnect All" -msgstr "Disconnetti" +msgstr "Disconnetti tutto" #: editor/connections_dialog.cpp #, fuzzy @@ -731,9 +711,8 @@ msgid "Edit..." msgstr "Modifica" #: editor/connections_dialog.cpp -#, fuzzy msgid "Go To Method" -msgstr "Metodi" +msgstr "Vai al metodo" #: editor/create_dialog.cpp msgid "Change %s Type" @@ -910,8 +889,8 @@ msgstr "Eliminare i file selezionati?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Elimina" @@ -1339,9 +1318,30 @@ msgid "Storing File:" msgstr "Memorizzazione File:" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "" +"Nessun template di esportazione trovato.\n" +"Scarica ed installa i template di esportazione." + +#: editor/editor_export.cpp msgid "Packing" msgstr "Impacchettando" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Pacchetto di debug personalizzato non trovato." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "Pacchetto di release personalizzato non trovato." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Template non trovato:" @@ -1355,9 +1355,8 @@ msgid "File Exists, Overwrite?" msgstr "File Esistente, Sovrascrivere?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" -msgstr "Seleziona Metodo" +msgstr "Seleziona questa cartella" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" @@ -1370,7 +1369,6 @@ msgstr "Mostra nel File Manager" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp #: editor/project_manager.cpp -#, fuzzy msgid "Show in File Manager" msgstr "Mostra nel File Manager" @@ -1515,19 +1513,16 @@ msgid "Methods" msgstr "Metodi" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Metodi" +msgstr "Metodi:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Proprietà " +msgstr "Proprietà del tema" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Proprietà :" +msgstr "Proprietà del tema:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1554,14 +1549,12 @@ msgid "Constants:" msgstr "Costanti:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Descrizione" +msgstr "Descrizione della classe" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Descrizione:" +msgstr "Descrizione della classe:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1578,12 +1571,10 @@ msgstr "" "$url2]richiedendone una[/url][/color]." #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions" -msgstr "Descrizione Proprietà :" +msgstr "Descrizione Proprietà " #: editor/editor_help.cpp -#, fuzzy msgid "Property Descriptions:" msgstr "Descrizione Proprietà :" @@ -1596,12 +1587,10 @@ msgstr "" "$color][url=$url]aggiungendone una[/url][/color]!" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions" -msgstr "Descrizione Metodo:" +msgstr "Descrizione Metodo" #: editor/editor_help.cpp -#, fuzzy msgid "Method Descriptions:" msgstr "Descrizione Metodo:" @@ -1619,39 +1608,32 @@ msgid "Search Help" msgstr "Cerca Aiuto" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Mostra Normale" +msgstr "Mostra Tutto" #: editor/editor_help_search.cpp -#, fuzzy msgid "Classes Only" -msgstr "Classi" +msgstr "Solo le classi" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "Metodi" +msgstr "Solo i metodi" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "Segnali" +msgstr "Solo i segnali" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "Costanti" +msgstr "Solo le costanti" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "Proprietà " +msgstr "Solo le proprietà " #: editor/editor_help_search.cpp -#, fuzzy msgid "Theme Properties Only" -msgstr "Proprietà " +msgstr "Solo le proprietà del tema" #: editor/editor_help_search.cpp #, fuzzy @@ -1659,9 +1641,8 @@ msgid "Member Type" msgstr "Membri" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "Classe:" +msgstr "Classe" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" @@ -2037,13 +2018,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Impossibile caricare uno script aggiuntivo dal percorso: '%s'." #: editor/editor_node.cpp -#, fuzzy msgid "" "Unable to load addon script from path: '%s' There seems to be an error in " "the code, please check the syntax." msgstr "" -"Impossibile caricare uno script aggiuntivo dal percorso: Lo script '%s' non " -"è in tool mode." +"Impossibile caricare uno script aggiuntivo dal percorso: '%s' Sembra esserci " +"un errore nel codice, controlla la sintassi." #: editor/editor_node.cpp msgid "" @@ -2099,19 +2079,16 @@ msgstr "Default" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" -msgstr "Mostra nel File System" +msgstr "Mostra nel FileSystem" #: editor/editor_node.cpp -#, fuzzy msgid "Play This Scene" msgstr "Esegui Scena" #: editor/editor_node.cpp -#, fuzzy msgid "Close Tab" -msgstr "Chiudi le altre schede" +msgstr "Chiudi scheda" #: editor/editor_node.cpp msgid "Switch Scene Tab" @@ -2186,7 +2163,6 @@ msgid "Save Scene" msgstr "Salva Scena" #: editor/editor_node.cpp -#, fuzzy msgid "Save All Scenes" msgstr "Salva tutte le Scene" @@ -2245,9 +2221,8 @@ msgid "Tools" msgstr "Strumenti" #: editor/editor_node.cpp -#, fuzzy msgid "Open Project Data Folder" -msgstr "Aprire Gestione Progetti?" +msgstr "Apri la cartella del progetto" #: editor/editor_node.cpp msgid "Quit to Project List" @@ -3420,6 +3395,19 @@ msgstr "Preset..." msgid "Reimport" msgstr "Reimporta" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Caricamento della risorsa fallito." @@ -4417,6 +4405,16 @@ msgid "Move CanvasItem" msgstr "Modifica CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Solo ancore" @@ -6492,7 +6490,7 @@ msgid "Post" msgstr "Post" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6575,10 +6573,16 @@ msgid "(empty)" msgstr "(vuoto)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animazioni" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animazione" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Velocità (FPS):" @@ -6587,7 +6591,8 @@ msgid "Loop" msgstr "Loop" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Frames Animazione" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6928,7 +6933,7 @@ msgstr "Rimuovi Punto Percorso" #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." -msgstr "" +msgstr "Non hai selezionato una texture da rimuovere." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." @@ -7391,6 +7396,38 @@ msgid "Browse" msgstr "Sfoglia" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Progetto Senza Nome" @@ -7405,6 +7442,19 @@ msgstr "Sei sicuro di voler aprire più di un progetto?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7647,7 +7697,7 @@ msgstr "Aggiungi Evento" #: editor/project_settings_editor.cpp msgid "Button" -msgstr "" +msgstr "Bottone" #: editor/project_settings_editor.cpp msgid "Left Button." @@ -8131,6 +8181,18 @@ msgid "Duplicate Node(s)" msgstr "Duplica Nodo(i)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Elimina Nodo(i)?" @@ -9005,11 +9067,6 @@ msgstr "Progetto" #: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy -msgid "Warnings" -msgstr "Avvertimento" - -#: modules/mono/editor/mono_bottom_panel.cpp -#, fuzzy msgid "View log" msgstr "Vedi Files" @@ -9436,6 +9493,90 @@ msgstr "" msgid "Set %s" msgstr "Imposta parametri" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Nome classe invalido" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Il nome non è un identificatore valido:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Il nome non è un identificatore valido:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Esegui nel Browser" @@ -9474,6 +9615,64 @@ msgstr "Impossibile leggere file:\n" msgid "Using default boot splash image." msgstr "Impossibile leggere file:\n" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Nome unico invalido." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "GUID prodotto invalido." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "GUID publisher invalido." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Colore di background invalido." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" +"Dimensioni dell'immagine dello Store Logo invalide (dovrebbero essere 50x50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" +"Dimensioni non valide dell'immagine del logo quadrato 44x44 (dovrebbero " +"essere 44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" +"Dimensioni non valide dell'immagine del logo quadrato 71x71 (dovrebbero " +"essere 71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" +"Dimensioni non valide dell'immagine del logo quadrato 150x150 (dovrebbero " +"essere 150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" +"Dimensioni non valide dell'immagine del logo quadrato 310x310 (dovrebbero " +"essere 310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" +"Dimensioni non valide dell'immagine del logo quadrato 310x150 (dovrebbero " +"essere 310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" +"Dimensioni non valide dell'immagine dello splash screen (dovrebbero essere " +"620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9583,6 +9782,13 @@ msgstr "" "Il nodo ParallaxLayer funziona solamente quando impostato come figlio di un " "nodo ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9642,7 +9848,7 @@ msgstr "" #: scene/3d/arvr_nodes.cpp msgid "ARVRCamera must have an ARVROrigin node as its parent" -msgstr "ARVRCamera deve avere un nodo ARVROrigin come suo genitore." +msgstr "ARVRCamera deve avere un nodo ARVROrigin come suo nodo padre" #: scene/3d/arvr_nodes.cpp msgid "ARVRController must have an ARVROrigin node as its parent" @@ -9772,6 +9978,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "Nulla é visibile perché le mesh non sono state assegnate ai draw pass." @@ -9789,16 +10002,9 @@ msgstr "" "Path2D." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D funziona solamente quando impostato come figlio di un nodo " -"Path2D." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9912,11 +10118,19 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp #, fuzzy msgid "Raw Mode" msgstr "Modalità di Pan" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Aggiungi colore attuale come preset" @@ -10016,6 +10230,25 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Warnings:" +#~ msgstr "Avvertimento" + +#~ msgid "Font Size:" +#~ msgstr "Dimensione Font:" + +#~ msgid "Line:" +#~ msgstr "Riga:" + +#~ msgid "Col:" +#~ msgstr "Col:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D funziona solamente quando impostato come figlio di un nodo " +#~ "Path2D." + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "L'Azione '%s' esiste già !" @@ -11259,66 +11492,6 @@ msgstr "" #~ msgid "Error creating the package signature." #~ msgstr "Errore di creazione della firma del pacchetto." -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "Nessun template di esportazione trovato.\n" -#~ "Scarica ed installa i template di esportazione." - -#~ msgid "Custom debug package not found." -#~ msgstr "Pacchetto di debug personalizzato non trovato." - -#~ msgid "Custom release package not found." -#~ msgstr "Pacchetto di release personalizzato non trovato." - -#~ msgid "Invalid unique name." -#~ msgstr "Nome unico invalido." - -#~ msgid "Invalid product GUID." -#~ msgstr "GUID prodotto invalido." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "GUID publisher invalido." - -#~ msgid "Invalid background color." -#~ msgstr "Colore di background invalido." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "" -#~ "Dimensioni dell'immagine dello Store Logo invalide (dovrebbero essere " -#~ "50x50)." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "" -#~ "Dimensioni non valide dell'immagine del logo quadrato 44x44 (dovrebbero " -#~ "essere 44x44)." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "" -#~ "Dimensioni non valide dell'immagine del logo quadrato 71x71 (dovrebbero " -#~ "essere 71x71)." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "" -#~ "Dimensioni non valide dell'immagine del logo quadrato 150x150 (dovrebbero " -#~ "essere 150x150)." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "" -#~ "Dimensioni non valide dell'immagine del logo quadrato 310x310 (dovrebbero " -#~ "essere 310x310)." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "" -#~ "Dimensioni non valide dell'immagine del logo quadrato 310x150 (dovrebbero " -#~ "essere 310x150)." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "Dimensioni non valide dell'immagine dello splash screen (dovrebbero " -#~ "essere 620x300)." - #~ msgid "RAW Mode" #~ msgstr "Modalità RAW" diff --git a/editor/translations/ja.po b/editor/translations/ja.po index 0d6f6677ba..9d5319d09a 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -20,12 +20,13 @@ # nyanode <akaruooyagi@yahoo.co.jp>, 2018. # nitenook <admin@alterbaum.net>, 2018. # Rob Matych <robertsmatych@gmail.com>, 2018. +# Hidetsugu Takahashi <manzyun@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-25 05:08+0000\n" -"Last-Translator: Rob Matych <robertsmatych@gmail.com>\n" +"PO-Revision-Date: 2019-01-19 19:21+0000\n" +"Last-Translator: Hidetsugu Takahashi <manzyun@gmail.com>\n" "Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/" "godot/ja/>\n" "Language: ja\n" @@ -38,13 +39,13 @@ msgstr "" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "convert() ã®å¼•æ•°ã®åž‹ãŒç„¡åйã§ã™ã€‚TYPE_* 定数を使ã£ã¦ãã ã•ã„。" +msgstr "Convert()ã«å¯¾ã—ã¦ç„¡åйãªåž‹ã®å¼•æ•°ã§ã™ã€‚TYPE_ 定数を使ã£ã¦ãã ã•ã„。" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "デコードã™ã‚‹ã«ã¯ãƒã‚¤ãƒˆãŒè¶³ã‚Šãªã„ã‹ã€ã¾ãŸã¯ç„¡åйãªå½¢å¼ã§ã™ã€‚" +msgstr "デコードãƒã‚¤ãƒˆã®ãƒã‚¤ãƒˆã¯è¶³ã‚Šã¾ã›ã‚“ã€ã¾ãŸã¯ç„¡åйãªå½¢å¼ã§ã™ã€‚" #: core/math/expression.cpp msgid "Invalid input %i (not passed) in expression" @@ -559,21 +560,13 @@ msgstr "ズームアウト" msgid "Reset Zoom" msgstr "ズームをリセット" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "è¦å‘Š:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "フォントサイズ:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "行:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "è¦å‘Š" #: editor/code_editor.cpp -msgid "Col:" -msgstr "列:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -874,8 +867,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "削除" @@ -1296,9 +1289,30 @@ msgid "Storing File:" msgstr "ファイルã®ä¿å˜:" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "" +"エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒ†ãƒ³ãƒ—レートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“.\n" +"ダウンãƒãƒ¼ãƒ‰ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„." + +#: editor/editor_export.cpp msgid "Packing" msgstr "パックã™ã‚‹" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "カスタム デãƒãƒƒã‚°ãƒ‘ッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "カスタム リリースパッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "テンプレートファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:" @@ -3300,6 +3314,20 @@ msgstr "プリセット..." msgid "Reimport" msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +#, fuzzy +msgid "Changing the type of an imported file requires editor restart." +msgstr "ビデオドライãƒã‚’変更ã™ã‚‹ã«ã¯ã€ã‚¨ãƒ‡ã‚£ã‚¿ã‚’å†èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "リソースã®èªè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" @@ -4261,6 +4289,16 @@ msgid "Move CanvasItem" msgstr "CanvasItemを移動" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "アンカーã®ã¿" @@ -6372,7 +6410,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6453,7 +6491,13 @@ msgid "(empty)" msgstr "(空)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "アニメーション" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" msgstr "アニメーション" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6465,7 +6509,8 @@ msgid "Loop" msgstr "ループ" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "アニメーションã®ãƒ•レーム" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7270,6 +7315,38 @@ msgid "Browse" msgstr "å‚ç…§" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "åç„¡ã—ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆ" @@ -7284,6 +7361,19 @@ msgstr "複数ã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã‚’é–‹ã„ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8016,6 +8106,18 @@ msgid "Duplicate Node(s)" msgstr "ノードを複製" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "ノードを削除ã—ã¾ã™ã‹?" @@ -8881,10 +8983,6 @@ msgid "Build Project" msgstr "プãƒã‚¸ã‚§ã‚¯ãƒˆã‚’ビルド" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "è¦å‘Š" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "ãƒã‚°ã‚’表示" @@ -9324,6 +9422,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "䏿£ãªã‚¯ãƒ©ã‚¹å" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "ã“ã®åå‰ã¯ä¸æ£ãªè˜åˆ¥åã§ã™:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "ã“ã®åå‰ã¯ä¸æ£ãªè˜åˆ¥åã§ã™:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "ブラウザã§å®Ÿè¡Œ" @@ -9358,6 +9540,61 @@ msgstr "ブートスプラッシュ画åƒãƒ•ァイルをèªã¿è¾¼ã‚ã¾ã›ã‚“ã§ msgid "Using default boot splash image." msgstr "デフォルトã®ãƒ–ートスプラッシュ画åƒã‚’使用ã—ã¾ã™ã€‚" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "パブリッシャã®GUIDãŒä¸æ£ã§ã™." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "䏿£ãªèƒŒæ™¯è‰²" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "䏿£ãªStoreãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸(縦横50x50ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "䏿£ãª44X44æ£æ–¹ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª44x44ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "䏿£ãª71x71æ£æ–¹ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª71x71ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "䏿£ãª150X150æ£æ–¹ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª150x150ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "䏿£ãª310X310æ£æ–¹ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª310x310ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "䏿£ãª310X150幅広ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª310x150ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "䏿£ãªã‚¹ãƒ—ラッシュスクリーンイメージ(縦横620x300ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9464,6 +9701,13 @@ msgstr "" "ParallaxLayer ノードã¯ã€ParallaxBackground ノードã®åã¨ã—ã¦è¨å®šã•れã¦ã„ã‚‹å ´åˆ" "ã®ã¿å‹•作ã—ã¾ã™ã€‚" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp #, fuzzy msgid "" @@ -9644,6 +9888,13 @@ msgstr "" "ã“れã¯ãƒŠãƒ“ゲーションデータã®ã¿æä¾›ã—ã¾ã™ã€‚" #: scene/3d/particles.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp #, fuzzy msgid "" "Nothing is visible because meshes have not been assigned to draw passes." @@ -9662,15 +9913,9 @@ msgstr "" "PathFollow2D ã¯ã€Path2D ノードã®åã¨ã—ã¦è¨å®šã•れã¦ã„ã‚‹å ´åˆã®ã¿å‹•作ã—ã¾ã™ã€‚" #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D ã¯ã€Path2D ノードã®åã¨ã—ã¦è¨å®šã•れã¦ã„ã‚‹å ´åˆã®ã¿å‹•作ã—ã¾ã™ã€‚" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9778,11 +10023,19 @@ msgstr "" "ã“ã®ãƒŽãƒ¼ãƒ‰ã¯éžæŽ¨å¥¨ã«ãªã‚Šã¾ã—ãŸã€‚代ã‚りã«AnimationTreeを使用ã—ã¦ãã ã•ã„。" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp #, fuzzy msgid "Raw Mode" msgstr "パン・モード" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "ç¾åœ¨ã®è‰²ã‚’プリセットã¨ã—ã¦è¿½åŠ " @@ -9879,6 +10132,23 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Warnings:" +#~ msgstr "è¦å‘Š:" + +#~ msgid "Font Size:" +#~ msgstr "フォントサイズ:" + +#~ msgid "Line:" +#~ msgstr "行:" + +#~ msgid "Col:" +#~ msgstr "列:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D ã¯ã€Path2D ノードã®åã¨ã—ã¦è¨å®šã•れã¦ã„ã‚‹å ´åˆã®ã¿å‹•作ã—ã¾ã™ã€‚" + #, fuzzy #~ msgid "Split already exists." #~ msgstr "アクション'%s'ã¯æ—¢ã«ã‚りã¾ã™!" @@ -11254,67 +11524,6 @@ msgstr "" #~ msgid "Error creating the package signature." #~ msgstr "パッケージ署å生æˆã‚¨ãƒ©ãƒ¼" -#, fuzzy -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒ†ãƒ³ãƒ—レートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“.\n" -#~ "ダウンãƒãƒ¼ãƒ‰ã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„." - -#, fuzzy -#~ msgid "Custom debug package not found." -#~ msgstr "カスタム デãƒãƒƒã‚°ãƒ‘ッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" - -#, fuzzy -#~ msgid "Custom release package not found." -#~ msgstr "カスタム リリースパッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“." - -#, fuzzy -#~ msgid "Invalid unique name." -#~ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚" - -#, fuzzy -#~ msgid "Invalid product GUID." -#~ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚" - -#, fuzzy -#~ msgid "Invalid publisher GUID." -#~ msgstr "パブリッシャã®GUIDãŒä¸æ£ã§ã™." - -#, fuzzy -#~ msgid "Invalid background color." -#~ msgstr "䏿£ãªèƒŒæ™¯è‰²" - -#, fuzzy -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "䏿£ãªStoreãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸(縦横50x50ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" - -#, fuzzy -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "䏿£ãª44X44æ£æ–¹ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª44x44ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" - -#, fuzzy -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "䏿£ãª71x71æ£æ–¹ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª71x71ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" - -#, fuzzy -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "䏿£ãª150X150æ£æ–¹ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª150x150ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" - -#, fuzzy -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "䏿£ãª310X310æ£æ–¹ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª310x310ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" - -#, fuzzy -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "䏿£ãª310X150幅広ãƒã‚´ã‚¤ãƒ¡ãƒ¼ã‚¸ï¼ˆç¸¦æ¨ª310x150ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" - -#, fuzzy -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "䏿£ãªã‚¹ãƒ—ラッシュスクリーンイメージ(縦横620x300ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)" - #~ msgid "RAW Mode" #~ msgstr "RAWモード" diff --git a/editor/translations/ka.po b/editor/translations/ka.po index 84a3cd1bbc..0e79fec501 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -4,12 +4,13 @@ # This file is distributed under the same license as the Godot source code. # Giorgi Beriashvili <giorgi.beriashvili@outlook.com>, 2018. # George Dzavashvili <dzavashviligeorge@gmail.com>, 2018. +# დემეტრე შáƒáƒœáƒ˜áƒ <blender.animation.maker@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:41+0100\n" -"Last-Translator: George Dzavashvili <dzavashviligeorge@gmail.com>\n" +"PO-Revision-Date: 2019-02-10 12:01+0000\n" +"Last-Translator: დემეტრე შáƒáƒœáƒ˜áƒ <blender.animation.maker@gmail.com>\n" "Language-Team: Georgian <https://hosted.weblate.org/projects/godot-engine/" "godot/ka/>\n" "Language: ka\n" @@ -17,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 2.2\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -69,7 +70,7 @@ msgstr "" #: editor/animation_bezier_editor.cpp msgid "Mirror" -msgstr "" +msgstr "სáƒáƒ კე" #: editor/animation_bezier_editor.cpp #, fuzzy @@ -79,7 +80,7 @@ msgstr "áƒáƒœáƒ˜áƒ› გáƒáƒ¡áƒáƒ¦áƒ”ბის ჩáƒáƒ§áƒ”ნებáƒ" #: editor/animation_bezier_editor.cpp #, fuzzy msgid "Duplicate Selected Key(s)" -msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ" +msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ გáƒáƒ¡áƒáƒ¦áƒ”ბ(ებ)ის áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ" #: editor/animation_bezier_editor.cpp #, fuzzy @@ -100,7 +101,7 @@ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბური კáƒáƒ“რá #: editor/animation_track_editor.cpp msgid "Anim Change Transition" -msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ დáƒáƒ›áƒáƒ›áƒ•ლáƒáƒ‘ის ცვლილებáƒ" +msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ დáƒáƒ›áƒáƒ›áƒ•ლáƒáƒ‘ის შეცვლáƒ" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" @@ -115,16 +116,19 @@ msgid "Anim Change Call" msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ძáƒáƒ®áƒ˜áƒšáƒ˜áƒ¡ ცვლილებáƒ" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Property Track" -msgstr "" +msgstr "áƒáƒ‘იექტზე დáƒáƒ™áƒ•ირვებáƒ" #: editor/animation_track_editor.cpp +#, fuzzy msgid "3D Transform Track" -msgstr "" +msgstr "3D გáƒáƒ დáƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ დáƒáƒ™áƒ•ირვებáƒ" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Call Method Track" -msgstr "" +msgstr "მეთáƒáƒ“ის გáƒáƒ›áƒáƒ«áƒáƒ®áƒ”ბის დáƒáƒ™áƒ•ირვებáƒ" #: editor/animation_track_editor.cpp msgid "Bezier Curve Track" @@ -139,7 +143,6 @@ msgid "Animation Playback Track" msgstr "" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Add Track" msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" @@ -151,32 +154,35 @@ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ხáƒáƒœáƒ’რძლივáƒáƒ‘რ(წრ#: editor/animation_track_editor.cpp #, fuzzy msgid "Animation Looping" -msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ზუმი." +msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ბრუნვáƒ" #: editor/animation_track_editor.cpp #: modules/visual_script/visual_script_editor.cpp msgid "Functions:" -msgstr "" +msgstr "ფუნქციები:" #: editor/animation_track_editor.cpp msgid "Audio Clips:" -msgstr "" +msgstr "ხმáƒáƒ•áƒáƒœáƒ˜ მáƒáƒœáƒáƒ™áƒ•ეთები:" #: editor/animation_track_editor.cpp msgid "Anim Clips:" -msgstr "" +msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ მáƒáƒœáƒáƒ™áƒ•ეთები:" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Toggle this track on/off." -msgstr "" +msgstr "ჩáƒáƒœáƒáƒ¬áƒ”რის ჩáƒáƒ თვრ/ გáƒáƒ›áƒáƒ თვáƒ" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Update Mode (How this property is set)" -msgstr "" +msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბის რეჟიმი (რáƒáƒ’áƒáƒ áƒáƒª ეს პáƒáƒ áƒáƒ›áƒ”ტრირდáƒáƒ§áƒ”ნებული)" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Interpolation Mode" -msgstr "" +msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი" #: editor/animation_track_editor.cpp msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" @@ -185,12 +191,12 @@ msgstr "" #: editor/animation_track_editor.cpp #, fuzzy msgid "Remove this track." -msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ თრექის წáƒáƒ¨áƒšáƒ." +msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ჩáƒáƒœáƒáƒ¬áƒ”რის წáƒáƒ¨áƒšáƒ." #: editor/animation_track_editor.cpp #, fuzzy msgid "Time (s): " -msgstr "ნáƒáƒ‘იჯი (წáƒáƒ›áƒ˜):" +msgstr "დრრ(წáƒáƒ›áƒ˜): " #: editor/animation_track_editor.cpp msgid "Continuous" @@ -206,11 +212,11 @@ msgstr "სáƒáƒ¡áƒ®áƒšáƒ”ტი" #: editor/animation_track_editor.cpp msgid "Capture" -msgstr "" +msgstr "გáƒáƒ“áƒáƒ¦áƒ”ბáƒ" #: editor/animation_track_editor.cpp msgid "Nearest" -msgstr "" +msgstr "უáƒáƒ®áƒšáƒáƒ”სი" #: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp #: editor/property_editor.cpp @@ -219,7 +225,7 @@ msgstr "წრფივი" #: editor/animation_track_editor.cpp msgid "Cubic" -msgstr "" +msgstr "კუბური" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" @@ -232,7 +238,7 @@ msgstr "" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "" +msgstr "ჩáƒáƒ¡áƒ•ით გáƒáƒ¡áƒáƒ¦áƒ”ბი" #: editor/animation_track_editor.cpp #, fuzzy @@ -249,12 +255,13 @@ msgid "Remove Anim Track" msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის წáƒáƒ¨áƒšáƒ" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Create NEW track for %s and insert key?" -msgstr "áƒáƒ®áƒáƒšáƒ˜ თრექის შექმნრ%s სთვის დრგáƒáƒ¡áƒáƒ¦áƒ”ბის ჩáƒáƒ¡áƒ›áƒ?" +msgstr "შევქმნრáƒáƒ®áƒáƒšáƒ˜ მáƒáƒœáƒáƒ™áƒ•ეთი %s-თვის დრჩáƒáƒ•სვრგáƒáƒ¡áƒáƒ¦áƒ”ბი?" #: editor/animation_track_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "áƒáƒ®áƒáƒšáƒ˜ %d თრექების შექმნრდრგáƒáƒ¡áƒáƒ¦áƒ”ბების ჩáƒáƒ¡áƒ›áƒ?" +msgstr "áƒáƒ®áƒáƒšáƒ˜ %d ჩáƒáƒœáƒáƒ¬áƒ”რების შექმნრდრგáƒáƒ¡áƒáƒ¦áƒ”ბების ჩáƒáƒ¡áƒ›áƒ?" #: editor/animation_track_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp @@ -270,8 +277,11 @@ msgid "Anim Insert" msgstr "áƒáƒœáƒ˜áƒ› ჩáƒáƒ§áƒ”ნებáƒ" #: editor/animation_track_editor.cpp +#, fuzzy msgid "AnimationPlayer can't animate itself, only other players." msgstr "" +"áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ›áƒ¨áƒ•ები ვერჩáƒáƒáƒ¢áƒáƒ ებს ცდებს სáƒáƒ™áƒ£áƒ—áƒáƒ თáƒáƒ•ზე, მხáƒáƒšáƒáƒ“ სხვრ" +"მáƒáƒ—áƒáƒ›áƒáƒ¨áƒ”ებზე." #: editor/animation_track_editor.cpp msgid "Anim Create & Insert" @@ -279,7 +289,7 @@ msgstr "áƒáƒœáƒ˜áƒ› შექმნრ& ჩáƒáƒ§áƒ”ნებáƒ" #: editor/animation_track_editor.cpp msgid "Anim Insert Track & Key" -msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის დრგáƒáƒ¡áƒáƒ¦áƒ”ბის ჩáƒáƒ›áƒáƒ¢áƒ”ბáƒ" +msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒœáƒáƒ¬áƒ”რის დრგáƒáƒ¡áƒáƒ¦áƒ”ბის ჩáƒáƒ›áƒáƒ¢áƒ”ბáƒ" #: editor/animation_track_editor.cpp msgid "Anim Insert Key" @@ -307,35 +317,39 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" -msgstr "" +msgstr "შეუძლებელირდáƒáƒáƒ›áƒáƒ¢áƒ áƒáƒ®áƒáƒšáƒ˜ ჩáƒáƒœáƒáƒ¬áƒ”რი ფესვის გáƒáƒ ეშე" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Track path is invalid, so can't add a key." -msgstr "" +msgstr "ჩáƒáƒœáƒáƒ¬áƒ”რის მისáƒáƒ›áƒáƒ თი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ იáƒ, áƒáƒ¡áƒ” რáƒáƒ› შეუძლებელირგáƒáƒ¡áƒáƒ¦áƒ”ბის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" #: editor/animation_track_editor.cpp msgid "Track is not of type Spatial, can't insert key" -msgstr "" +msgstr "ჩáƒáƒœáƒáƒ¬áƒ”რი áƒáƒ áƒáƒ ის სივრცის სáƒáƒ®áƒ˜áƒ¡, ვერჩáƒáƒ¡áƒ•áƒáƒ›áƒ— გáƒáƒ¡áƒáƒ¦áƒ”ბს" #: editor/animation_track_editor.cpp msgid "Track path is invalid, so can't add a method key." msgstr "" +"ჩáƒáƒœáƒáƒ¬áƒ”რის მისáƒáƒ›áƒáƒ თი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ იáƒ, áƒáƒ¡áƒ” რáƒáƒ› შეუძლებელირმეთáƒáƒ“ური გáƒáƒ¡áƒáƒ¦áƒ”ბის " +"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ." #: editor/animation_track_editor.cpp msgid "Method not found in object: " -msgstr "" +msgstr "მეთáƒáƒ“ი ვერმáƒáƒ˜áƒ«áƒ”ბნრáƒáƒ‘იექტში: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების გáƒáƒ“áƒáƒáƒ“გილებáƒ" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Clipboard is empty" -msgstr "" +msgstr "ბუფერი ცáƒáƒ იელიáƒ" #: editor/animation_track_editor.cpp msgid "Anim Scale Keys" -msgstr "áƒáƒœáƒ˜áƒ› გáƒáƒ¡áƒáƒ¦áƒ”ბების შკáƒáƒšáƒ˜áƒ ებáƒ" +msgstr "áƒáƒœáƒ˜áƒ› გáƒáƒ¡áƒáƒ¦áƒ”ბების ზáƒáƒ›áƒ˜áƒ¡ შეცვლáƒ" #: editor/animation_track_editor.cpp msgid "" @@ -344,21 +358,19 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." -msgstr "" +msgstr "მხáƒáƒšáƒáƒ“ áƒáƒ©áƒ•ენე ჩáƒáƒœáƒáƒ¬áƒ”რები კვáƒáƒœáƒ«áƒ”ბიდáƒáƒœ მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ხეში." #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "" +msgstr "დáƒáƒáƒ¯áƒ’უფე ჩáƒáƒœáƒáƒ¬áƒ”რები კვáƒáƒœáƒ«áƒ”ბის მიხედვით áƒáƒœ áƒáƒ©áƒ•ენე რáƒáƒ’áƒáƒ ც უბრáƒáƒšáƒ სიáƒ." #: editor/animation_track_editor.cpp -#, fuzzy msgid "Snap (s): " -msgstr "ნáƒáƒ‘იჯი (წáƒáƒ›áƒ˜):" +msgstr "ნáƒáƒ‘იჯი (s): " #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation step value." -msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ზუმი." +msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ნáƒáƒ‘იჯის ღირებულებáƒ." #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp @@ -367,12 +379,11 @@ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ზუმი." #: editor/project_manager.cpp editor/project_settings_editor.cpp #: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp msgid "Edit" -msgstr "" +msgstr "შეცვლáƒ" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation properties." -msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ზუმი." +msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები." #: editor/animation_track_editor.cpp msgid "Copy Tracks" @@ -549,22 +560,14 @@ msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•ებáƒ" msgid "Reset Zoom" msgstr "ზუმის სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ–ე დáƒáƒ§áƒ”ნებáƒ" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -msgid "Line:" -msgstr "ხáƒáƒ–ი:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "სვეტი:" - #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" msgstr "სáƒáƒ›áƒ˜áƒ–ნე კვáƒáƒœáƒ«áƒ¨áƒ˜ მეთáƒáƒ“ი უნდრიყáƒáƒ¡ გáƒáƒœáƒ¡áƒáƒ–ღვრული!" @@ -869,8 +872,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "წáƒáƒ¨áƒšáƒ" @@ -1292,9 +1295,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3236,6 +3255,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4182,6 +4214,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6182,7 +6224,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6259,8 +6301,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "ფუნქციები:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒžáƒ¢áƒ˜áƒ›áƒ˜áƒ–áƒáƒªáƒ˜áƒ" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6271,8 +6319,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები." #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7018,6 +7067,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7031,6 +7112,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7714,6 +7808,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8503,10 +8609,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8896,6 +8998,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8928,6 +9113,53 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9009,6 +9241,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9164,6 +9403,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9178,13 +9424,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9281,10 +9523,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9369,6 +9619,12 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Line:" +#~ msgstr "ხáƒáƒ–ი:" + +#~ msgid "Col:" +#~ msgstr "სვეტი:" + #, fuzzy #~ msgid "Remove Split" #~ msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ ებáƒ" diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 11e5313724..d241c5a7f2 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:07+0000\n" +"PO-Revision-Date: 2019-02-07 15:09+0000\n" "Last-Translator: ì†¡íƒœì„ <xotjq237@gmail.com>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/" "godot/ko/>\n" @@ -25,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -49,23 +49,23 @@ msgstr "ì¸ìŠ¤í„´ìŠ¤ê°€ 비어있기 ë•Œë¬¸ì— Self를 ì‚¬ìš©í• ìˆ˜ ì—†ìŠµë‹ˆë‹ #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "ì—°ì‚°ìž %s, %s ë° %s ì˜ ì—°ì‚° 대ìƒì´ ìœ íš¨í•˜ì§€ 않습니다." +msgstr "ì—°ì‚°ìž %s, %s ê·¸ë¦¬ê³ %sì˜ ì—°ì‚° 대ìƒì´ ìœ íš¨í•˜ì§€ 않습니다." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "ë² ì´ìФ 타입 %s ì— ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ë±ìФ 타입 %s" +msgstr "ë² ì´ìФ 타입 %sì— ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ë±ìФ 타입 %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "ë² ì´ìФ 타입 %s ì— ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ë±ìФ ì´ë¦„ %s" +msgstr "ë² ì´ìФ 타입 %sì— ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ë±ìФ ì´ë¦„ %s" #: core/math/expression.cpp msgid "Invalid arguments to construct '%s'" -msgstr "'%s' ì„ êµ¬ì„±í•˜ê¸°ì— ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ìˆ˜" +msgstr "'%s'ì„(를) êµ¬ì„±í•˜ê¸°ì— ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ìˆ˜" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "'%s' 를 호출 시:" +msgstr "'%s'ì„(를) 호출 시:" #: editor/animation_bezier_editor.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -249,7 +249,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ 트랙 ì‚ì œ" #: editor/animation_track_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "%s (ì„)를 위해 새 íŠ¸ëž™ì„ ë§Œë“¤ê³ í‚¤ë¥¼ ì‚½ìž…í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" +msgstr "%sì„(를) 위해 새 íŠ¸ëž™ì„ ë§Œë“¤ê³ í‚¤ë¥¼ ì‚½ìž…í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/animation_track_editor.cpp msgid "Create %d NEW tracks and insert keys?" @@ -548,21 +548,13 @@ msgstr "축소" msgid "Reset Zoom" msgstr "줌 리셋" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "ê²½ê³ :" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "í°íЏ í¬ê¸°:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "ë¼ì¸:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "ê²½ê³ " #: editor/code_editor.cpp -msgid "Col:" -msgstr "칼럼:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -639,11 +631,11 @@ msgstr "ì—°ê²°" #: editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "'%s'를 '%s'ì— ì—°ê²°" +msgstr "'%s'ì„(를) '%s'ì— ì—°ê²°" #: editor/connections_dialog.cpp msgid "Disconnect '%s' from '%s'" -msgstr "'%s'와 '%s'ì˜ ì—°ê²° í•´ì œ" +msgstr "'%s'와(ê³¼) '%s'ì˜ ì—°ê²° í•´ì œ" #: editor/connections_dialog.cpp msgid "Disconnect all from signal: '%s'" @@ -672,7 +664,7 @@ msgstr "\"%s\" 시그ë„ì—서 ëª¨ë“ ì—°ê²°ì„ ì‚ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp msgid "Signals" -msgstr "시그ë„(Signal)" +msgstr "시그ë„" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" @@ -692,7 +684,7 @@ msgstr "메서드로 ì´ë™" #: editor/create_dialog.cpp msgid "Change %s Type" -msgstr "%s로 타입 변경" +msgstr "%s(으)로 타입 변경" #: editor/create_dialog.cpp editor/project_settings_editor.cpp #: modules/visual_script/visual_script_editor.cpp @@ -744,7 +736,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 @@ -818,7 +810,7 @@ msgstr "ì‚ì œí• ìˆ˜ 없습니다:" #: editor/dependency_editor.cpp msgid "Error loading:" -msgstr "불러오기 중 ì—러:" +msgstr "불러오기 중 오류:" #: editor/dependency_editor.cpp msgid "Load failed due to missing dependencies:" @@ -838,7 +830,7 @@ msgstr "ì¢…ì† ê´€ê³„ ìˆ˜ì •" #: editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "불러오기 중 ì—러 ë°œìƒ!" +msgstr "불러오기 중 오류 ë°œìƒ!" #: editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" @@ -863,8 +855,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "ì‚ì œ" @@ -1286,9 +1278,25 @@ msgid "Storing File:" msgstr "íŒŒì¼ ì €ìž¥ 중:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "ì˜ˆìƒ ê²½ë¡œì—서 내보내기 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "패킹 중" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "커스텀 디버그 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "커스텀 릴리즈 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다:" @@ -1625,7 +1633,7 @@ msgstr "프로ì 트 내보내기가 오류 코드 %d 로 실패했습니다." #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Error saving resource!" -msgstr "리소스 ì €ìž¥ 중 ì—러!" +msgstr "리소스 ì €ìž¥ 중 오류!" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: scene/gui/dialogs.cpp @@ -1646,27 +1654,27 @@ msgstr "ìš”ì²í•œ íŒŒì¼ í˜•ì‹ì„ 알 수 ì—†ìŒ:" #: editor/editor_node.cpp msgid "Error while saving." -msgstr "ì €ìž¥ 중 ì—러." +msgstr "ì €ìž¥ 중 오류." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Can't open '%s'. The file could have been moved or deleted." -msgstr "'%s' 를 ì—´ 수 없습니다. 파ì¼ì´ 존재하지 않습니다." +msgstr "'%s'ì„(를) ì—´ 수 없습니다. 파ì¼ì´ 존재하지 않습니다." #: editor/editor_node.cpp msgid "Error while parsing '%s'." -msgstr "'%s' 파싱 중 ì—러." +msgstr "'%s' 구문 ë¶„ì„ ì¤‘ 오류." #: editor/editor_node.cpp msgid "Unexpected end of file '%s'." -msgstr "예ìƒì¹˜ 못한 파ì¼ì˜ ë '%s' 입니다..." +msgstr "예ìƒì¹˜ 못한 '%s' 파ì¼ì˜ ë." #: editor/editor_node.cpp msgid "Missing '%s' or its dependencies." -msgstr "'%s' 없거나 ì¢…ì† í•ëª©ì´ ì—†ìŠµë‹ˆë‹¤." +msgstr "'%s'ì´(ê°€) 없거나 ì¢…ì† í•ëª©ì´ ì—†ìŠµë‹ˆë‹¤." #: editor/editor_node.cpp msgid "Error while loading '%s'." -msgstr "'%s' 로딩 중 ì—러." +msgstr "'%s' 로딩 중 오류." #: editor/editor_node.cpp msgid "Saving Scene" @@ -1710,7 +1718,7 @@ msgstr "ë³‘í•©í• ë©”ì‹œ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 불러올 수 없습니다!" #: editor/editor_node.cpp msgid "Error saving MeshLibrary!" -msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬ ì €ìž¥ 중 ì—러!" +msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬ ì €ìž¥ 중 오류!" #: editor/editor_node.cpp msgid "Can't load TileSet for merging!" @@ -1718,11 +1726,11 @@ msgstr "ë³‘í•©í• íƒ€ì¼ì…‹ì„ 불러올 수 없습니다!" #: editor/editor_node.cpp msgid "Error saving TileSet!" -msgstr "타ì¼ì…‹ ì €ìž¥ 중 ì—러!" +msgstr "타ì¼ì…‹ ì €ìž¥ 중 오류!" #: editor/editor_node.cpp msgid "Error trying to save layout!" -msgstr "ë ˆì´ì•„웃 ì €ìž¥ ì‹œë„ ì¤‘ ì—러!" +msgstr "ë ˆì´ì•„웃 ì €ìž¥ ì‹œë„ ì¤‘ 오류!" #: editor/editor_node.cpp msgid "Default editor layout overridden." @@ -1845,7 +1853,7 @@ msgstr "ì €ìž¥ ë° ë‹«ê¸°" #: editor/editor_node.cpp msgid "Save changes to '%s' before closing?" -msgstr "닫기 ì „ì— '%s' ì— ë³€ê²½ì‚¬í•ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" +msgstr "닫기 ì „ì— '%s'ì— ë³€ê²½ì‚¬í•ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/editor_node.cpp msgid "Save Scene As..." @@ -1941,35 +1949,35 @@ msgstr "ë©”ì¸ ì”¬ ì„ íƒ" #: editor/editor_node.cpp msgid "Unable to enable addon plugin at: '%s' parsing of config failed." -msgstr "ì• ë“œì˜¨ 플러그ì¸ì„ í™œì„±í™”í• ìˆ˜ 없습니다: '%s' ì„¤ì • í•´ì„ ì‹¤íŒ¨." +msgstr "ì• ë“œì˜¨ 플러그ì¸ì„ í™œì„±í™”í• ìˆ˜ 없습니다: '%s' 구성 구문 ë¶„ì„ ì‹¤íŒ¨." #: editor/editor_node.cpp msgid "Unable to find script field for addon plugin at: 'res://addons/%s'." -msgstr "ì• ë“œì˜¨ 플러그ì¸ì„ ì°¾ì„ ìˆ˜ 없습니다: 'res://addons/%s'." +msgstr "ë‹¤ìŒ ê²½ë¡œì—서 ì• ë“œì˜¨ 플러그ì¸ì„ ì°¾ì„ ìˆ˜ 없습니다: 'res://addons/%s'." #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s'." -msgstr "ì• ë“œì˜¨ 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 없습니다: '%s'." +msgstr "ë‹¤ìŒ ê²½ë¡œì—서 ì• ë“œì˜¨ 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 없습니다: '%s'." #: editor/editor_node.cpp msgid "" "Unable to load addon script from path: '%s' There seems to be an error in " "the code, please check the syntax." msgstr "" -"해당 경로ì—서 ì• ë“œì˜¨ 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 없습니다: '%s' ì½”ë“œì— ì˜¤ë¥˜ê°€ 있는 " +"ë‹¤ìŒ ê²½ë¡œì—서 ì• ë“œì˜¨ 스í¬ë¦½íŠ¸ë¥¼ 불러올 수 없습니다: '%s' ì½”ë“œì— ì˜¤ë¥˜ê°€ 있는 " "것 같습니다, êµ¬ë¬¸ì„ í™•ì¸í•´ ë³´ì‹ì‹œì˜¤." #: editor/editor_node.cpp 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 @@ -1985,12 +1993,12 @@ msgid "" "Error loading scene, it must be inside the project path. Use 'Import' to " "open the scene, then save it inside the project path." msgstr "" -"씬 로딩 중 ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. 프로ì 트 경로 ì•ˆì— ì¡´ìž¬í•´ì•¼ 합니다. 'ê°€ì ¸ì˜¤" +"씬 로딩 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. 프로ì 트 경로 ì•ˆì— ì¡´ìž¬í•´ì•¼ 합니다. 'ê°€ì ¸ì˜¤" "기'로 ì”¬ì„ ì—° 후ì—, 프로ì 트 경로 ì•ˆì— ì €ìž¥í•˜ì„¸ìš”." #: editor/editor_node.cpp msgid "Scene '%s' has broken dependencies:" -msgstr "'%s' ì”¬ì˜ ì¢…ì† í•ëª©ì´ ê¹¨ì ¸ìžˆìŠµë‹ˆë‹¤:" +msgstr "'%s' ì”¬ì˜ ì¢…ì† í•ëª©ì´ ê¹¨ì ¸ 있습니다:" #: editor/editor_node.cpp msgid "Clear Recent Scenes" @@ -2372,11 +2380,11 @@ 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" @@ -2441,7 +2449,7 @@ msgstr "새 ìƒì† 씬" #: editor/editor_node.cpp msgid "Load Errors" -msgstr "불러오기 ì—러" +msgstr "불러오기 오류" #: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp msgid "Select" @@ -2489,7 +2497,7 @@ msgstr "ì„¤ì¹˜ëœ í”ŒëŸ¬ê·¸ì¸:" #: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp msgid "Update" -msgstr "ê°±ì‹ " +msgstr "ì—…ë°ì´íЏ" #: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -2578,15 +2586,14 @@ msgid "Assign..." msgstr "ì§€ì •í•˜ê¸°..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ê²½ë¡œ" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ RID" #: editor/editor_properties.cpp msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." -msgstr "ì„ íƒëœ 리소스(%s)ê°€ ì´ ì†ì„±(%s)ì— ì•Œë§žì€ íƒ€ìž…ì´ ì•„ë‹™ë‹ˆë‹¤." +msgstr "ì„ íƒëœ 리소스 (%s)ê°€ ì´ ì†ì„± (%s)ì— ì•Œë§žì€ íƒ€ìž…ì´ ì•„ë‹™ë‹ˆë‹¤." #: editor/editor_properties.cpp msgid "" @@ -2728,7 +2735,7 @@ msgstr "노드ì—서 ê°€ì ¸ì˜¤ê¸°:" #: editor/export_template_manager.cpp msgid "Re-Download" -msgstr "다시 다운불러오기" +msgstr "다시 다운로드" #: editor/export_template_manager.cpp msgid "Uninstall" @@ -2773,7 +2780,7 @@ msgstr "í…œí”Œë¦¿ì— version.txt를 ì°¾ì„ ìˆ˜ 없습니다." #: editor/export_template_manager.cpp msgid "Error creating path for templates:" -msgstr "템플릿 경로 ìƒì„± ì—러:" +msgstr "템플릿 경로 ìƒì„± 오류:" #: editor/export_template_manager.cpp msgid "Extracting Export Templates" @@ -2835,7 +2842,7 @@ msgstr "" #: editor/export_template_manager.cpp msgid "Error requesting url: " -msgstr "url ìš”ì² ì—러: " +msgstr "url ìš”ì² ì˜¤ë¥˜: " #: editor/export_template_manager.cpp msgid "Connecting to Mirror..." @@ -2877,11 +2884,11 @@ msgstr "다운로드 중" #: editor/export_template_manager.cpp msgid "Connection Error" -msgstr "ì—°ê²° ì—러" +msgstr "ì—°ê²° 오류" #: editor/export_template_manager.cpp msgid "SSL Handshake Error" -msgstr "SSL 핸드ì‰ì´í¬ ì—러" +msgstr "SSL 핸드ì‰ì´í¬ 오류" #: editor/export_template_manager.cpp msgid "Current Version:" @@ -2925,7 +2932,7 @@ msgstr "ì¦ê²¨ì°¾ê¸°" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" -msgstr "íŒŒì¼ ì‹œìŠ¤í…œì—서 '%s'를 ì°¾ì„ ìˆ˜ 없습니다!" +msgstr "íŒŒì¼ ì‹œìŠ¤í…œì—서 '%s'ì„(를) ì°¾ì„ ìˆ˜ 없습니다!" #: editor/filesystem_dock.cpp msgid "View items as a grid of thumbnails." @@ -2950,11 +2957,11 @@ msgstr "í´ë”를 ìžì‹ ì˜ í•˜ìœ„ë¡œ ì´ë™í• 수 없습니다." #: editor/filesystem_dock.cpp msgid "Error moving:" -msgstr "ì´ë™ ì—러:" +msgstr "ì´ë™ 오류:" #: editor/filesystem_dock.cpp msgid "Error duplicating:" -msgstr "ë³µì œ 중 ì—러:" +msgstr "ë³µì œ 중 오류:" #: editor/filesystem_dock.cpp msgid "Unable to update dependencies:" @@ -3158,7 +3165,7 @@ msgstr "그룹 ì´ë¦„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤." #: editor/groups_editor.cpp editor/node_dock.cpp msgid "Groups" -msgstr "그룹(Groups)" +msgstr "그룹" #: editor/groups_editor.cpp msgid "Nodes not in Group" @@ -3194,7 +3201,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ì„ 분리시켜 ê°€ì ¸ì˜¤ê¸°" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials" -msgstr "ë¨¸í„°ë¦¬ì–¼ì„ ë¶„ë¦¬í•´ì„œ ê°€ì ¸ì˜¤ê¸°" +msgstr "ë¨¸í‹°ë¦¬ì–¼ì„ ë¶„ë¦¬í•´ì„œ ê°€ì ¸ì˜¤ê¸°" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects" @@ -3202,7 +3209,7 @@ msgstr "오브ì 트를 분리해서 ê°€ì ¸ì˜¤ê¸°" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials" -msgstr "오브ì 트와 ë¨¸í„°ë¦¬ì–¼ì„ ë¶„ë¦¬í•´ì„œ ê°€ì ¸ì˜¤ê¸°" +msgstr "오브ì 트와 ë¨¸í‹°ë¦¬ì–¼ì„ ë¶„ë¦¬í•´ì„œ ê°€ì ¸ì˜¤ê¸°" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Animations" @@ -3210,11 +3217,11 @@ msgstr "오브ì 트와 ì• ë‹ˆë©”ì´ì…˜ì„ 분리해서 ê°€ì ¸ì˜¤ê¸°" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Materials+Animations" -msgstr "머터리얼과 ì• ë‹ˆë©”ì´ì…˜ì„ 분리해서 ê°€ì ¸ì˜¤ê¸°" +msgstr "머티리얼과 ì• ë‹ˆë©”ì´ì…˜ì„ 분리해서 ê°€ì ¸ì˜¤ê¸°" #: editor/import/resource_importer_scene.cpp msgid "Import with Separate Objects+Materials+Animations" -msgstr "오브ì 트, 머터리얼, ì• ë‹ˆë©”ì´ì…˜ì„ 분리해서 ê°€ì ¸ì˜¤ê¸°" +msgstr "오브ì 트, 머티리얼, ì• ë‹ˆë©”ì´ì…˜ì„ 분리해서 ê°€ì ¸ì˜¤ê¸°" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes" @@ -3222,7 +3229,7 @@ msgstr "ì—¬ëŸ¬ê°œì˜ ì”¬ìœ¼ë¡œ ê°€ì ¸ì˜¤ê¸°" #: editor/import/resource_importer_scene.cpp msgid "Import as Multiple Scenes+Materials" -msgstr "여러 ê°œì˜ ì”¬ê³¼ 머터리얼로 ê°€ì ¸ì˜¤ê¸°" +msgstr "여러 ê°œì˜ ì”¬ê³¼ 머티리얼로 ê°€ì ¸ì˜¤ê¸°" #: editor/import/resource_importer_scene.cpp #: editor/plugins/mesh_library_editor_plugin.cpp @@ -3256,7 +3263,7 @@ msgstr "" #: editor/import/resource_importer_scene.cpp msgid "Error running post-import script:" -msgstr "ê°€ì ¸ì˜¤ê¸° 후 ì‹¤í–‰í• ìŠ¤í¬ë¦½íЏ 실행 중 ì—러:" +msgstr "ê°€ì ¸ì˜¤ê¸° 후 ì‹¤í–‰í• ìŠ¤í¬ë¦½íЏ 실행 중 오류:" #: editor/import/resource_importer_scene.cpp msgid "Saving..." @@ -3264,11 +3271,11 @@ msgstr "ì €ìž¥ 중..." #: editor/import_dock.cpp msgid "Set as Default for '%s'" -msgstr "'%s'를 기본으로 ì§€ì •" +msgstr "'%s'ì„(를) 기본으로 ì§€ì •" #: editor/import_dock.cpp msgid "Clear Default for '%s'" -msgstr "'%s'ì— ëŒ€í•´ 기본값으로 ì§€ì • í•´ì œ" +msgstr "'%s'ì„(를) 기본ì—서 í•´ì œ" #: editor/import_dock.cpp msgid " Files" @@ -3286,6 +3293,21 @@ msgstr "프리셋..." msgid "Reimport" msgstr "다시 ê°€ì ¸ì˜¤ê¸°" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "씬 ì €ìž¥, 다시 ê°€ì ¸ì˜¤ê¸° ë° ë‹¤ì‹œ 시작" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "ê°€ì ¸ì˜¨ 파ì¼ì˜ íƒ€ìž…ì„ ë³€ê²½í•˜ë ¤ë©´ ì—디터를 다시 시작해야 합니다." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"ê²½ê³ : ì´ ë¦¬ì†ŒìŠ¤ë¥¼ 사용하는 ì—ì…‹ì´ ì¡´ìž¬í•©ë‹ˆë‹¤, ì—ì…‹ì„ ë¶ˆëŸ¬ì˜¤ì§€ ëª»í• ìˆ˜ 있습니" +"다." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "리소스 불러오기 실패." @@ -3689,7 +3711,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ ë„구" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Animation" -msgstr "ì• ë‹ˆë©”ì´ì…˜" +msgstr "ì• ë‹ˆë©”ì´ì…˜(Animation)" #: editor/plugins/animation_player_editor_plugin.cpp msgid "New" @@ -3777,7 +3799,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ ì´ë¦„:" #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp #: editor/script_create_dialog.cpp msgid "Error!" -msgstr "ì—러!" +msgstr "오류!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" @@ -3793,7 +3815,7 @@ msgstr "êµì°¨-ì• ë‹ˆë©”ì´ì…˜ ë¸”ë Œë“œ 시간" #: editor/plugins/animation_state_machine_editor.cpp msgid "End" -msgstr "ë" +msgstr "End" #: editor/plugins/animation_state_machine_editor.cpp msgid "Immediate" @@ -3817,7 +3839,7 @@ msgstr "하위 ì „í™˜ì— ì‹œìž‘ê³¼ ë 노드가 필요합니다." #: editor/plugins/animation_state_machine_editor.cpp msgid "No playback resource set at path: %s." -msgstr "ê²½ë¡œì— ì„¤ì •ëœ ìž¬ìƒ ë¦¬ì†ŒìŠ¤ ì„¤ì •ì´ ì—†ìŠµë‹ˆë‹¤: %s." +msgstr "ë‹¤ìŒ ê²½ë¡œì— ì„¤ì •ëœ ìž¬ìƒ ë¦¬ì†ŒìŠ¤ê°€ 없습니다: %s." #: editor/plugins/animation_state_machine_editor.cpp msgid "" @@ -4008,7 +4030,7 @@ msgstr "í˜¸ìŠ¤íŠ¸ëª…ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Connection error, please try again." -msgstr "ì—°ê²° ì—러, 다시 시ë„í•´ 주세요." +msgstr "ì—°ê²° 오류, 다시 시ë„í•´ 주세요." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Can't connect to host:" @@ -4044,7 +4066,7 @@ msgstr "sha256 해시 í™•ì¸ ì‹¤íŒ¨" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" -msgstr "ì—ì…‹ 다운로드 ì—러:" +msgstr "ì—ì…‹ 다운로드 오류:" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Downloading (%s / %s)..." @@ -4060,7 +4082,7 @@ msgstr "í•´ê²° 중..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Error making request" -msgstr "ìš”ì² ì—러" +msgstr "ìš”ì² ì˜¤ë¥˜" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Idle" @@ -4072,7 +4094,7 @@ msgstr "다시 시ë„" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download Error" -msgstr "다운로드 ì—러" +msgstr "다운로드 오류" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Download for this asset is already in progress!" @@ -4092,7 +4114,7 @@ msgstr "다ìŒ" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Last" -msgstr "마지막으로" +msgstr "ë으로" #: editor/plugins/asset_library_editor_plugin.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -4241,6 +4263,17 @@ msgid "Move CanvasItem" msgstr "CanvasItem ì´ë™" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "ê²½ê³ : 컨테ì´ë„ˆì˜ ìžì‹ì€ ë¶€ëª¨ì— ì˜í•´ ê²°ì •ëœ ìœ„ì¹˜ì™€ 규모를 갖습니다." + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "앵커만" @@ -4496,7 +4529,7 @@ msgstr "%s 추가" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Adding %s..." -msgstr "%s 추가중..." +msgstr "%s 추가 중..." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Cannot instantiate multiple nodes without root." @@ -4510,7 +4543,7 @@ msgstr "노드 만들기" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp msgid "Error instancing scene from %s" -msgstr "'%s' 로부터 씬 ì¸ìŠ¤í„´ìŠ¤ 중 ì—러" +msgstr "'%s'ì—서 씬 ì¸ìŠ¤í„´ìŠ¤ 중 오류" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Change default type" @@ -4766,7 +4799,7 @@ msgstr "씬으로부터 ê°€ì ¸ì˜¤ê¸°" #: editor/plugins/mesh_library_editor_plugin.cpp msgid "Update from Scene" -msgstr "씬으로부터 ê°±ì‹ í•˜ê¸°" +msgstr "씬으로부터 ì—…ë°ì´íЏ 하기" #: editor/plugins/multimesh_editor_plugin.cpp msgid "No mesh source specified (and no MultiMesh set in node)." @@ -4883,7 +4916,7 @@ msgstr "ì˜¤ì§ ParticlesMaterial 프로세스 메테리얼 ì•ˆì˜ í¬ì¸íŠ¸ë§Œ ì #: editor/plugins/particles_2d_editor_plugin.cpp msgid "Error loading image:" -msgstr "ì´ë¯¸ì§€ 불러오기 ì—러:" +msgstr "ì´ë¯¸ì§€ 불러오기 오류:" #: editor/plugins/particles_2d_editor_plugin.cpp msgid "No pixels with transparency > 128 in image..." @@ -4974,7 +5007,7 @@ msgstr "ì—미션 소스: " #: editor/plugins/particles_editor_plugin.cpp msgid "A processor material of type 'ParticlesMaterial' is required." -msgstr "'ParticlesMaterial' íƒ€ìž…ì˜ í”„ë¡œì„¸ì„œ ë¨¸í„°ë¦¬ì–¼ì´ í•„ìš”í•©ë‹ˆë‹¤." +msgstr "'ParticlesMaterial' íƒ€ìž…ì˜ í”„ë¡œì„¸ì„œ ë¨¸í‹°ë¦¬ì–¼ì´ í•„ìš”í•©ë‹ˆë‹¤." #: editor/plugins/particles_editor_plugin.cpp msgid "Generating AABB" @@ -5146,28 +5179,24 @@ msgid "Create Polygon & UV" msgstr "í´ë¦¬ê³¤ & UV 만들기" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "새로운 가로 ê°€ì´ë“œ 만들기" +msgstr "ë‚´ë¶€ ê¼ì§“ì 만들기" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "ì¸-컨트롤 í¬ì¸íЏ ì‚ì œ" +msgstr "ë‚´ë¶€ ê¼ì§“ì ì‚ì œ" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ í´ë¦¬ê³¤ (3ê°œì˜ ë‹¤ë¥¸ ê¼ì§“ì ì´ í•„ìš”í•¨)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "í´ë¦¬ê³¤ 편집" +msgstr "ì‚¬ìš©ìž ì§€ì • í´ë¦¬ê³¤ 추가" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "ì¶©ëŒ í´ë¦¬ê³¤ ì‚ì œ" +msgstr "ì‚¬ìš©ìž ì§€ì • í´ë¦¬ê³¤ ì‚ì œ" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5194,14 +5223,12 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" msgstr "í¬ì¸íЏ" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "í´ë¦¬ê³¤->UV" +msgstr "í´ë¦¬ê³¤" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -5237,13 +5264,15 @@ msgstr "í´ë¦¬ê³¤ í¬ê¸° ì¡°ì ˆ" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." -msgstr "" +msgstr "ì‚¬ìš©ìž ì§€ì • í´ë¦¬ê³¤ 만들기. ì‚¬ìš©ìž ì§€ì • í´ë¦¬ê³¤ ë Œë”ë§ì„ 활성화합니다." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"ì‚¬ìš©ìž ì§€ì • í´ë¦¬ê³¤ì„ ì‚ì œ. 남아있는 í´ë¦¬ê³¤ì´ 없으면 ì‚¬ìš©ìž ì§€ì • í´ë¦¬ê³¤ ë Œë”ë§" +"ì€ ë¹„í™œì„±í™”ë©ë‹ˆë‹¤." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -5312,7 +5341,7 @@ msgstr "ë³¸ì„ í´ë¦¬ê³¤ì— ë™ê¸°í™”" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" -msgstr "ì—러: 리소스를 불러올 수 없습니다!" +msgstr "오류: 리소스를 불러올 수 없습니다!" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "Add Resource" @@ -5378,19 +5407,19 @@ msgstr "변경사í•ì„ ì €ìž¥í•˜ê³ ë‹«ê² ìŠµë‹ˆê¹Œ?" #: editor/plugins/script_editor_plugin.cpp msgid "Error writing TextFile:" -msgstr "í…스트 íŒŒì¼ ì“°ê¸° ì—러:" +msgstr "í…스트 íŒŒì¼ ì“°ê¸° 오류:" #: editor/plugins/script_editor_plugin.cpp msgid "Error: could not load file." -msgstr "ì—러: 파ì¼ì„ 불러올 수 ì—†ìŒ." +msgstr "오류: 파ì¼ì„ 불러올 수 ì—†ìŒ." #: editor/plugins/script_editor_plugin.cpp msgid "Error could not load file." -msgstr "ì—러로 파ì¼ì„ 불러올 수 ì—†ìŒ." +msgstr "오류로 파ì¼ì„ 불러올 수 ì—†ìŒ." #: editor/plugins/script_editor_plugin.cpp msgid "Error saving file!" -msgstr "íŒŒì¼ ì €ìž¥ 중 ì—러!" +msgstr "íŒŒì¼ ì €ìž¥ 중 오류!" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme." @@ -5426,11 +5455,11 @@ msgstr "테마 ê°€ì ¸ì˜¤ê¸°" #: editor/plugins/script_editor_plugin.cpp msgid "Error while saving theme" -msgstr "테마 ì €ìž¥ 중 ì—러" +msgstr "테마 ì €ìž¥ 중 오류" #: editor/plugins/script_editor_plugin.cpp msgid "Error saving" -msgstr "ì €ìž¥ 중 ì—러" +msgstr "ì €ìž¥ 중 오류" #: editor/plugins/script_editor_plugin.cpp msgid "Save Theme As..." @@ -5781,7 +5810,7 @@ msgstr "물리ì 본 만들기" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Skeleton" -msgstr "ìŠ¤ì¼ˆë ˆí†¤" +msgstr "ìŠ¤ì¼ˆë ˆí†¤(Skeleton)" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Create physical skeleton" @@ -5853,7 +5882,7 @@ msgstr "ê·¸ë ¤ì§„ 오브ì 트" #: editor/plugins/spatial_editor_plugin.cpp msgid "Material Changes" -msgstr "머터리얼 변경" +msgstr "머티리얼 변경" #: editor/plugins/spatial_editor_plugin.cpp msgid "Shader Changes" @@ -6235,7 +6264,8 @@ msgid "Post" msgstr "Post" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +#, fuzzy +msgid "Nameless gizmo" msgstr "ì´ë¦„없는 기즈모" #: editor/plugins/sprite_editor_plugin.cpp @@ -6280,7 +6310,7 @@ 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" @@ -6311,10 +6341,16 @@ msgid "(empty)" msgstr "(비었ìŒ)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "ì• ë‹ˆë©”ì´ì…˜(Animations)" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "ì• ë‹ˆë©”ì´ì…˜(Animation)" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "ì†ë„ (FPS):" @@ -6323,7 +6359,8 @@ msgid "Loop" msgstr "루프" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "ì• ë‹ˆë©”ì´ì…˜ í”„ë ˆìž„" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6823,7 +6860,7 @@ msgstr "실행가능" #: editor/project_export.cpp msgid "Delete patch '%s' from list?" -msgstr "'%s'를 패치 목ë¡ì—서 ì‚ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" +msgstr "'%s'ì„(를) 패치 목ë¡ì—서 ì‚ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/project_export.cpp msgid "Delete preset '%s'?" @@ -7005,7 +7042,7 @@ msgid "" "Couldn't load project.godot in project path (error %d). It may be missing or " "corrupted." msgstr "" -"프로ì 트 경로로부터 project.godot 파ì¼ì„ 불러올 수 없습니다 (ì—러 %d). 존재하" +"프로ì 트 경로로부터 project.godot 파ì¼ì„ 불러올 수 없습니다 (오류 %d). 존재하" "ì§€ 않거나 ì†ìƒë˜ì—ˆì„ 수 있습니다." #: editor/project_manager.cpp @@ -7073,6 +7110,46 @@ msgid "Browse" msgstr "찾아보기" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "ë Œë”러:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"ë†’ì€ ì‹œê°ì 품질\n" +"ëª¨ë“ ê¸°ëŠ¥ 사용 가능\n" +"ì˜¤ëž˜ëœ í•˜ë“œì›¨ì–´ì—는 호환하지 않ìŒ\n" +"웹 게임ì—는 비 추천" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 2.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"ë‚®ì€ ì‹œê°ì 품질\n" +"ì¼ë¶€ ê¸°ëŠ¥ì€ ì‚¬ìš©í• ìˆ˜ ì—†ìŒ\n" +"ëŒ€ë¶€ë¶„ì˜ í•˜ë“œì›¨ì–´ì—서 ìž‘ë™í•¨\n" +"웹 ê²Œìž„ì— ì¶”ì²œ" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "ë Œë”러는 ë‚˜ì¤‘ì— ë°”ê¿€ 수 있지만, ì”¬ì„ ì¡°ì •í•´ì•¼ í• ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "ì´ë¦„없는 프로ì 트" @@ -7085,6 +7162,27 @@ msgid "Are you sure to open more than one project?" msgstr "ë‘ê°œ ì´ìƒì˜ 프로ì 트를 ì—´ë ¤ëŠ” ê²ƒì´ í™•ì‹¤í•©ë‹ˆê¹Œ?" #: editor/project_manager.cpp +#, fuzzy +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"다ìŒì˜ 프로ì 트 ì„¤ì • 파ì¼ì€ ì´ì „ ë²„ì „ì—서 ìƒì„±ëœ 것으로, ë‹¤ìŒ ë²„ì „ì— ë§žê²Œ ë³€" +"환해야 합니다:\n" +"\n" +"%s\n" +"\n" +"ë³€í™˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?\n" +"ê²½ê³ : ë” ì´ìƒ ì´ í”„ë¡œì 트를 ì´ì „ ë²„ì „ì—서 ì—´ 수 없게 ë©ë‹ˆë‹¤." + +#: editor/project_manager.cpp msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -7095,13 +7193,13 @@ msgid "" "Warning: You will not be able to open the project with previous versions of " "the engine anymore." msgstr "" -"다ìŒì˜ 프로ì 트 ì„¤ì • 파ì¼ì€ ì˜ˆì „ ë²„ì „ì—서 ìƒì„±ëœ 것으로, ì´ ë²„ì „ì— ë§žê²Œ ì „í™˜" -"해야 합니다:\n" +"다ìŒì˜ 프로ì 트 ì„¤ì • 파ì¼ì€ ì´ì „ ë²„ì „ì—서 ìƒì„±ëœ 것으로, ë‹¤ìŒ ë²„ì „ì— ë§žê²Œ ë³€" +"환해야 합니다:\n" "\n" "%s\n" "\n" -"ì „í™˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?\n" -"ê²½ê³ : ë” ì´ìƒ ì´ í”„ë¡œì 트를 과거 ë²„ì „ì˜ ê²ƒìœ¼ë¡œ ì—´ 수 없게 ë©ë‹ˆë‹¤." +"ë³€í™˜í•˜ì‹œê² ìŠµë‹ˆê¹Œ?\n" +"ê²½ê³ : ë” ì´ìƒ ì´ í”„ë¡œì 트를 ì´ì „ ë²„ì „ì—서 ì—´ 수 없게 ë©ë‹ˆë‹¤." #: editor/project_manager.cpp msgid "" @@ -7150,7 +7248,7 @@ msgstr "" msgid "" "You are about the scan %s folders for existing Godot projects. Do you " "confirm?" -msgstr "%s ì—서 기존 Godot 프로ì íŠ¸ë“¤ì„ ìŠ¤ìº”í•˜ë ¤ê³ í•©ë‹ˆë‹¤. ì§„í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" +msgstr "%sì—서 기존 Godot 프로ì íŠ¸ë“¤ì„ ìŠ¤ìº”í•˜ë ¤ê³ í•©ë‹ˆë‹¤. ì§„í–‰í•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: editor/project_manager.cpp msgid "Project Manager" @@ -7222,7 +7320,7 @@ msgstr "" #: editor/project_settings_editor.cpp msgid "Action '%s' already exists!" -msgstr "'%s' ì•¡ì…˜ì´ ì´ë¯¸ 존재합니다!" +msgstr "ì•¡ì…˜ '%s'ì´(ê°€) ì´ë¯¸ 존재합니다!" #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" @@ -7362,7 +7460,7 @@ msgstr "'%s' ì†ì„±ì´ 존재하지 않습니다." #: editor/project_settings_editor.cpp msgid "Setting '%s' is internal, and it can't be deleted." -msgstr "'%s' ì„¤ì •ì€ ë‚´ë¶€ì ì¸ ê²ƒìž…ë‹ˆë‹¤, ì‚ì œê°€ 불가합니다." +msgstr "'%s' ì„¤ì •ì€ ë‚´ë¶€ì ì¸ ê²ƒìž…ë‹ˆë‹¤, ì‚ì œí• ìˆ˜ 없습니다." #: editor/project_settings_editor.cpp msgid "Delete Item" @@ -7386,7 +7484,7 @@ msgstr "ìž…ë ¥ ì•¡ì…˜ 추가" #: editor/project_settings_editor.cpp msgid "Error saving settings." -msgstr "ì„¤ì • ì €ìž¥ 중 ì—러." +msgstr "ì„¤ì • ì €ìž¥ 중 오류." #: editor/project_settings_editor.cpp msgid "Settings saved OK." @@ -7562,7 +7660,7 @@ msgstr "노드 ì„ íƒ" #: editor/property_editor.cpp msgid "Error loading file: Not a resource!" -msgstr "íŒŒì¼ ë¶ˆëŸ¬ì˜¤ê¸° ì—러: 리소스가 아닙니다!" +msgstr "íŒŒì¼ ë¶ˆëŸ¬ì˜¤ê¸° 오류: 리소스가 아닙니다!" #: editor/property_editor.cpp msgid "Pick a Node" @@ -7710,15 +7808,15 @@ msgstr "리셋" #: editor/rename_dialog.cpp msgid "Error" -msgstr "ì—러" +msgstr "오류" #: 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" @@ -7726,7 +7824,7 @@ msgstr "글로벌 변형 ìœ ì§€" #: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp msgid "Reparent" -msgstr "부모노드 ìž¬ì§€ì •" +msgstr "부모 ìž¬ì§€ì •" #: editor/run_settings_dialog.cpp msgid "Run Mode:" @@ -7754,13 +7852,14 @@ msgstr "ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤í• ìˆ˜ 있는 부모가 없습니다." #: editor/scene_tree_dock.cpp msgid "Error loading scene from %s" -msgstr "'%s' 로부터 씬 로딩 중 ì—러" +msgstr "%sì—서 씬 로딩 중 오류" #: editor/scene_tree_dock.cpp msgid "" "Cannot instance the scene '%s' because the current scene exists within one " "of its nodes." -msgstr "ë…¸ë“œì¤‘ì— í˜„ìž¬ ì”¬ì´ ì¡´ìž¬í•˜ê¸° 때문ì—, '%s' ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤ í• ìˆ˜ 없습니다." +msgstr "" +"한 ë…¸ë“œì— í˜„ìž¬ ì”¬ì´ ì¡´ìž¬í•˜ê¸° 때문ì—, '%s' ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤ í• ìˆ˜ 없습니다." #: editor/scene_tree_dock.cpp msgid "Instance Scene(s)" @@ -7791,6 +7890,20 @@ msgid "Duplicate Node(s)" msgstr "노드 ë³µì œ" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" +"ìƒì†ëœ 씬ì—서 부모 노드를 다시 ì§€ì •í• ìˆ˜ 없습니다, ë…¸ë“œì˜ ìˆœì„œëŠ” 바꿀 수 없습" +"니다." + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "노드는 루트로 ë˜ë ¤ë©´ íŽ¸ì§‘ëœ ì”¬ì— ì†í•´ìžˆì–´ì•¼ 합니다." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "ì¸ìŠ¤í„´íŠ¸í™”ëœ ì”¬ì€ ë£¨íŠ¸ê°€ ë 수 없습니다" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "노드를 ì‚ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" @@ -7871,11 +7984,11 @@ msgstr "" #: editor/scene_tree_dock.cpp msgid "Error saving scene." -msgstr "씬 ì €ìž¥ 중 ì—러." +msgstr "씬 ì €ìž¥ 중 오류." #: editor/scene_tree_dock.cpp msgid "Error duplicating scene to save it." -msgstr "ì €ìž¥í•˜ê¸° 위해 ì”¬ì„ ë³µì œí•˜ëŠ” ì¤‘ì— ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." +msgstr "ì €ìž¥í•˜ê¸° 위해 ì”¬ì„ ë³µì œí•˜ëŠ” ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." #: editor/scene_tree_dock.cpp msgid "Sub-Resources" @@ -8042,15 +8155,15 @@ msgstr "노드 ì„ íƒ" #: editor/script_create_dialog.cpp msgid "Error loading template '%s'" -msgstr "'%s' 템플릿 불러오기 ì—러" +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 "'%s' 스í¬ë¦½íЏ 로딩 중 ì—러" +msgstr "'%s' 스í¬ë¦½íЏ 로딩 중 오류" #: editor/script_create_dialog.cpp msgid "N/A" @@ -8166,7 +8279,7 @@ msgstr "목ë¡ì—서 한 ê°œ í˜¹ì€ ì—¬ëŸ¬ ê°œì˜ í•ëª©ì„ ì§‘ì–´ 그래프로 #: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp msgid "Errors" -msgstr "ì—러" +msgstr "오류" #: editor/script_editor_debugger.cpp msgid "Child Process Connected" @@ -8174,7 +8287,7 @@ msgstr "ìžì‹ 프로세스 ì—°ê²°ë¨" #: editor/script_editor_debugger.cpp msgid "Copy Error" -msgstr "복사 ì—러" +msgstr "복사 오류" #: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" @@ -8595,10 +8708,6 @@ msgid "Build Project" msgstr "프로ì 트 빌드" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "ê²½ê³ " - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "로그 보기" @@ -8778,8 +8887,8 @@ msgstr "비주얼 스í¬ë¦½íЏ 노드 ë³µì œ" #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature." msgstr "" -"%s 를 ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ Getter를 드ë¡í•©ë‹ˆë‹¤. Shift를 ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ ì¼ë°˜ì ì¸ ì‹œê·¸" -"니처를 드ë¡í•©ë‹ˆë‹¤." +"%sì„(를) ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ Getter를 드ë¡í•©ë‹ˆë‹¤. Shiftì„(를) ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ ì¼ë°˜ì " +"ì¸ ì‹œê·¸ë‹ˆì²˜ë¥¼ 드ë¡í•©ë‹ˆë‹¤." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature." @@ -8789,7 +8898,7 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp 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." @@ -8797,7 +8906,7 @@ msgstr "Ctrlì„ ëˆ„ë¥´ê³ ìžˆìœ¼ë©´ ë…¸ë“œì— ëŒ€í•œ 간단한 참조를 드ë¡í #: modules/visual_script/visual_script_editor.cpp msgid "Hold %s to drop a Variable Setter." -msgstr "%s를 ëˆ„ë¥´ê³ ìžˆë¥´ë©´ 변수 Setter를 드ë¡í•©ë‹ˆë‹¤." +msgstr "%sì„(를) ëˆ„ë¥´ê³ ìžˆë¥´ë©´ 변수 Setter를 드ë¡í•©ë‹ˆë‹¤." #: modules/visual_script/visual_script_editor.cpp msgid "Hold Ctrl to drop a Variable Setter." @@ -8957,7 +9066,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: " @@ -9000,6 +9109,88 @@ msgstr "Get %s" msgid "Set %s" msgstr "Set %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "패키지 ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "패키지 세그먼트는 길ì´ê°€ 0ì´ ì•„ë‹ˆì–´ì•¼ 합니다." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" +"ë¬¸ìž '%s'ì€(는) 안드로ì´ë“œ ì• í”Œë¦¬ì¼€ì´ì…˜ 패키지 ì´ë¦„으로 쓸 수 없습니다." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "숫ìžëŠ” 패키지 ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžê°€ ë 수 없습니다." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "ë¬¸ìž '%s'ì€(는) 패키지 ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžê°€ ë 수 없습니다." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "패키지는 ì ì–´ë„ í•˜ë‚˜ì˜ '.' 분리 기호를 ê°–ê³ ìžˆì–´ì•¼ 합니다." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "ADB 실행 파ì¼ì´ ì—디터 ì„¤ì •ì—서 구성ë˜ì§€ 않았습니다." + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "OpenJDK jarsignerê°€ ì—디터 ì„¤ì •ì—서 구성ë˜ì§€ 않았습니다." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "Debug keystoreì´ ì—디터 ì„¤ì • ë˜ëŠ” 프리셋ì—서 구성ë˜ì§€ 않았습니다." + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "APK í™•ìž¥ì— ìœ íš¨í•˜ì§€ ì•Šì€ ê³µìš© 키입니다." + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ íŒ¨í‚¤ì§€ ì´ë¦„:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "ì‹ë³„ìžê°€ 없습니다." + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ëŠ” 길ì´ê°€ 0ì´ ì•„ë‹ˆì–´ì•¼ 합니다." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "ë¬¸ìž '%s'ì€(는) ì‹ë³„ìžì— 쓸 수 없습니다." + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "숫ìžëŠ” ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžê°€ ë 수 없습니다." + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "ë¬¸ìž '%s'ì€(는) ì‹ë³„ìž ì„¸ê·¸ë¨¼íŠ¸ì˜ ì²« 문ìžê°€ ë 수 없습니다." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "ì‹ë³„ìžëŠ” ì ì–´ë„ í•˜ë‚˜ì˜ '.' 분리 기호를 ê°–ê³ ìžˆì–´ì•¼ 합니다." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "ì•±ìŠ¤í† ì–´ 팀 IDê°€ ì§€ì •ë˜ì§€ 않았습니다 - 프로ì 트를 êµ¬ì„±í• ìˆ˜ 없습니다." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ì‹ë³„ìž:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "요구ë˜ëŠ” ì•„ì´ì½˜ì´ 프리셋ì—서 ì§€ì •ë˜ì§€ 않았습니다." + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "브ë¼ìš°ì €ì—서 실행" @@ -9032,6 +9223,51 @@ msgstr "부트 스플래시 ì´ë¯¸ì§€ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ:" msgid "Using default boot splash image." msgstr "기본 부트 스플래시 ì´ë¯¸ì§€ 사용." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ íŒ¨í‚¤ì§€ ê³ ìœ ì´ë¦„." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í”„ë¡œë•트 GUID." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í¼ë¸”리셔 GUID." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ ë°°ê²½ 색ìƒ." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (50x50 ì´ì–´ì•¼ 합니다)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (44x44 ì´ì–´ì•¼ 합니다)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (71x71 ì´ì–´ì•¼ 합니다)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (150x150 ì´ì–´ì•¼ 합니다)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (310x310 ì´ì–´ì•¼ 합니다)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (310x150 ì´ì–´ì•¼ 합니다)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" +"ìœ íš¨í•˜ì§€ ì•Šì€ ìŠ¤í”Œëž˜ì‰¬ 스í¬ë¦° ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (620x300 ì´ì–´ì•¼ 합니다)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9137,6 +9373,13 @@ msgid "" msgstr "" "ParallaxLayer는 ParallaxBackground ë…¸ë“œì˜ ìžì‹ë…¸ë“œë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9321,6 +9564,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "ë©”ì‹œë“¤ì„ íŒ¨ìŠ¤ë¥¼ 그리ë„ë¡ í• ë‹¹í•˜ì§€ 않았으므로 ë³´ì´ì§€ 않습니다." @@ -9337,16 +9587,12 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow는 Path ë…¸ë“œì˜ ìžì‹ìœ¼ë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "OrientedPathFollow는 Path ë…¸ë“œì˜ ìžì‹ìœ¼ë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" -"OrientedPathFollow는 부모 Pathì˜ Curve 리소스ì—서 \"Up Vector\"를 활성화해야 " -"합니다." +"PathFollow ROTATION_ORIENTED는 부모 Pathì˜ Curve 리소스ì—서 \"Up Vector\"ê°€ " +"활성화ë˜ì–´ 있어야 합니다." #: scene/3d/physics_body.cpp msgid "" @@ -9410,7 +9656,7 @@ msgstr "" #: scene/animation/animation_blend_tree.cpp msgid "On BlendTree node '%s', animation not found: '%s'" -msgstr "BlendTree 노드 '%s' ì—서, ì• ë‹ˆë©”ì´ì…˜ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ: '%s'" +msgstr "BlendTree 노드 '%s'ì—서, ì• ë‹ˆë©”ì´ì…˜ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ: '%s'" #: scene/animation/animation_blend_tree.cpp msgid "Animation not found: '%s'" @@ -9418,7 +9664,7 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ: '%s'" #: scene/animation/animation_tree.cpp msgid "In node '%s', invalid animation: '%s'." -msgstr "노드 '%s' ì—서, ìœ íš¨í•˜ì§€ ì•Šì€ ì• ë‹ˆë©”ì´ì…˜: '%s'." +msgstr "노드 '%s'ì—서, ìœ íš¨í•˜ì§€ ì•Šì€ ì• ë‹ˆë©”ì´ì…˜: '%s'." #: scene/animation/animation_tree.cpp msgid "Invalid animation: '%s'." @@ -9426,7 +9672,7 @@ msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ì• ë‹ˆë©”ì´ì…˜: '%s'." #: scene/animation/animation_tree.cpp msgid "Nothing connected to input '%s' of node '%s'." -msgstr "노드 '%s' ì˜ '%s' ìž…ë ¥ì— ì•„ë¬´ê²ƒë„ ì—°ê²°ë˜ì§€ 않ìŒ." +msgstr "노드 '%s'ì˜ '%s' ìž…ë ¥ì— ì•„ë¬´ê²ƒë„ ì—°ê²°ë˜ì§€ 않ìŒ." #: scene/animation/animation_tree.cpp msgid "A root AnimationNode for the graph is not set." @@ -9453,10 +9699,18 @@ msgstr "" "ì´ ë…¸ë“œëŠ” ë” ì´ìƒ ì‚¬ìš©í• ìˆ˜ 없습니다. AnimationTree를 사용하시길 ë°”ëžë‹ˆë‹¤." #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Raw 모드" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "현재 색ìƒì„ 프리셋으로 추가" @@ -9517,7 +9771,7 @@ msgstr "" #: scene/resources/dynamic_font.cpp msgid "Error initializing FreeType." -msgstr "FreeType 초기화 ì—러." +msgstr "FreeType 초기화 오류." #: scene/resources/dynamic_font.cpp msgid "Unknown font format." @@ -9525,7 +9779,7 @@ msgstr "알 수 없는 í°íЏ 형ì‹." #: scene/resources/dynamic_font.cpp msgid "Error loading font." -msgstr "í°íЏ 로딩 ì—러." +msgstr "í°íЏ 로딩 오류." #: scene/resources/dynamic_font.cpp msgid "Invalid font size." @@ -9551,6 +9805,21 @@ msgstr "ê· ì¼í•˜ê²Œ 배치함." msgid "Varyings can only be assigned in vertex function." msgstr "Varyings는 ì˜¤ì§ ë²„í…스 함수ì—서만 ì§€ì •í• ìˆ˜ 있습니다." +#~ msgid "Warnings:" +#~ msgstr "ê²½ê³ :" + +#~ msgid "Font Size:" +#~ msgstr "í°íЏ í¬ê¸°:" + +#~ msgid "Line:" +#~ msgstr "ë¼ì¸:" + +#~ msgid "Col:" +#~ msgstr "칼럼:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "OrientedPathFollow는 Path ë…¸ë“œì˜ ìžì‹ìœ¼ë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다." + #~ msgid "Split point with itself." #~ msgstr "ìžì²´ì 으로 í¬ì¸íЏ ë¶„í• ." @@ -10762,53 +11031,6 @@ msgstr "Varyings는 ì˜¤ì§ ë²„í…스 함수ì—서만 ì§€ì •í• ìˆ˜ 있습니다. #~ msgid "Error creating the package signature." #~ msgstr "패키지 ì„œëª…ì„ ìƒì„±í•˜ëŠ” 중 ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "내보내기 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다.\n" -#~ "내보내기 í…œí”Œë¦¿ì„ ë‹¤ìš´ë¡œë“œí•˜ì—¬ 설치하ì‹ì‹œìš”." - -#~ msgid "Custom debug package not found." -#~ msgstr "커스텀 디버그 패키지를 ì°¾ì„ ìˆ˜ 없습니다." - -#~ msgid "Custom release package not found." -#~ msgstr "커스텀 릴리즈 패키지를 ì°¾ì„ ìˆ˜ 없습니다." - -#~ msgid "Invalid unique name." -#~ msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ê³ ìœ ì´ë¦„." - -#~ msgid "Invalid product GUID." -#~ msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í”„ë¡œë•트 GUID." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í¼ë¸”리셔 GUID." - -#~ msgid "Invalid background color." -#~ msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ ë°°ê²½ 색ìƒ." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (50x50 ì´ì–´ì•¼ 합니다)." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (44x44 ì´ì–´ì•¼ 합니다)." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (71x71 ì´ì–´ì•¼ 합니다)." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (150x150 ì´ì–´ì•¼ 합니다)." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (310x310 ì´ì–´ì•¼ 합니다)." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ë¡œê³ ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (310x150 ì´ì–´ì•¼ 합니다)." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "ìœ íš¨í•˜ì§€ ì•Šì€ ìŠ¤í”Œëž˜ì‰¬ 스í¬ë¦° ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (620x300 ì´ì–´ì•¼ 합니다)." - #, fuzzy #~ msgid "RAW Mode" #~ msgstr "실행 모드:" diff --git a/editor/translations/lt.po b/editor/translations/lt.po index 7bea51f4f5..8b380692a7 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -547,22 +547,14 @@ msgstr "Nutolinti" msgid "Reset Zoom" msgstr "Atstatyti PriartinimÄ…" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Linija:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Stulpelis:" - #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" msgstr "Metodas pasirinktame Node turi bÅ«ti nurodytas!" @@ -861,8 +853,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1279,9 +1271,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3230,6 +3238,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4187,6 +4208,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6186,7 +6217,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6264,8 +6295,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Animacija" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animacija" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6276,8 +6313,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Animacija" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7033,6 +7071,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7046,6 +7116,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7729,6 +7812,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8522,10 +8617,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8916,6 +9007,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Netinkamas Å¡rifto dydis." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Netinkamas Å¡rifto dydis." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8948,6 +9122,53 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Netinkamas Å¡rifto dydis." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Netinkamas Å¡rifto dydis." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Netinkamas Å¡rifto dydis." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9029,6 +9250,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9186,6 +9414,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9200,13 +9435,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9304,10 +9535,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9392,6 +9631,12 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Line:" +#~ msgstr "Linija:" + +#~ msgid "Col:" +#~ msgstr "Stulpelis:" + #, fuzzy #~ msgid "Remove Split" #~ msgstr "Panaikinti pasirinkimÄ…" diff --git a/editor/translations/lv.po b/editor/translations/lv.po index 849ae26500..47564302e4 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -543,22 +543,14 @@ msgstr "AttÄlinÄt" msgid "Reset Zoom" msgstr "AtiestatÄ«t tÄlummaiņu" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Rinda:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Kolona:" - #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" msgstr "" @@ -857,8 +849,8 @@ msgstr "IzdzÄ“st izvÄ“lÄ“tos failus?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "IzdzÄ“st" @@ -1283,9 +1275,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3224,6 +3232,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4170,6 +4191,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6168,7 +6199,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6245,8 +6276,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Funkcijas:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "OptimizÄ“t animÄciju" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6257,8 +6294,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "AnimÄcijas Ä«pašības." #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7006,6 +7044,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7019,6 +7089,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7700,6 +7783,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8490,10 +8585,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8881,6 +8972,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "NederÄ«gs nosaukums." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "NederÄ«gs fonta izmÄ“rs." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8913,6 +9087,54 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "NederÄ«gs nosaukums." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "NederÄ«gs nosaukums." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "NederÄ«gs fonta izmÄ“rs." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "NederÄ«gs nosaukums." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8994,6 +9216,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9149,6 +9378,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9163,13 +9399,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9265,10 +9497,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Pievienot paÅ¡reizÄ“jo krÄsu kÄ iepriekÅ¡noteiktu krÄsu" @@ -9353,9 +9593,11 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" -#, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "NederÄ«gs fonta izmÄ“rs." +#~ msgid "Line:" +#~ msgstr "Rinda:" + +#~ msgid "Col:" +#~ msgstr "Kolona:" #, fuzzy #~ msgid "Remove Split" diff --git a/editor/translations/ml.po b/editor/translations/ml.po index 7e49430df9..29fc0b10d2 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -532,20 +532,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -839,8 +831,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1257,9 +1249,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3177,6 +3185,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4113,6 +4134,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6089,7 +6120,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6165,7 +6196,11 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +msgid "Animations:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6177,7 +6212,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6908,6 +6943,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6921,6 +6988,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7599,6 +7679,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8385,10 +8477,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8776,6 +8864,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8808,6 +8977,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8889,6 +9102,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9044,6 +9264,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9058,13 +9285,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9157,10 +9380,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/ms.po b/editor/translations/ms.po index e72cdb350e..7e95e3e179 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -541,20 +541,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -848,8 +840,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1266,9 +1258,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3186,6 +3194,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4124,6 +4145,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6100,7 +6131,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6176,7 +6207,12 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "Set Peralihan ke:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6188,7 +6224,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6924,6 +6960,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6937,6 +7005,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7617,6 +7698,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8405,10 +8498,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8796,6 +8885,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8828,6 +8998,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8909,6 +9123,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9064,6 +9285,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9078,13 +9306,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9177,10 +9401,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/nb.po b/editor/translations/nb.po index fe2a37ec74..8d2071bc78 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -5,7 +5,7 @@ # Allan Nordhøy <epost@anotheragency.no>, 2017-2018. # Anonymous <GentleSaucepan@protonmail.com>, 2017. # Elias <eliasnykrem@gmail.com>, 2018. -# flesk <eivindkn@gmail.com>, 2017. +# flesk <eivindkn@gmail.com>, 2017, 2019. # Frank T. Rambol <frank@d-fect.com>, 2018. # Jørgen Aarmo Lund <jorgen.aarmo@gmail.com>, 2016. # NicolaiF <nico-fre@hotmail.com>, 2017-2018. @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:41+0100\n" -"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n" +"PO-Revision-Date: 2019-02-10 12:01+0000\n" +"Last-Translator: flesk <eivindkn@gmail.com>\n" "Language-Team: Norwegian BokmÃ¥l <https://hosted.weblate.org/projects/godot-" "engine/godot/nb_NO/>\n" "Language: nb\n" @@ -25,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 2.2\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -126,24 +126,29 @@ msgid "Anim Change Call" msgstr "Anim Forandre Kall" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Property Track" -msgstr "" +msgstr "Egenskapsspor" #: editor/animation_track_editor.cpp +#, fuzzy msgid "3D Transform Track" -msgstr "" +msgstr "3D transformasjonsspor" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Call Method Track" -msgstr "" +msgstr "Kall metode-spor" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Bezier Curve Track" -msgstr "" +msgstr "Bezier-kurvespor" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Audio Playback Track" -msgstr "" +msgstr "Lydavspillingsspor" #: editor/animation_track_editor.cpp #, fuzzy @@ -172,11 +177,12 @@ msgstr "Funksjoner:" #: editor/animation_track_editor.cpp msgid "Audio Clips:" -msgstr "" +msgstr "Lydklipp:" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Anim Clips:" -msgstr "" +msgstr "Anim-klipp:" #: editor/animation_track_editor.cpp #, fuzzy @@ -185,7 +191,7 @@ msgstr "Vis/skjul distraksjonsfri modus." #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" -msgstr "" +msgstr "Oppdateringsmodus (Hvordan denne egenskapen settes)" #: editor/animation_track_editor.cpp #, fuzzy @@ -225,7 +231,7 @@ msgstr "Framtid" #: editor/animation_track_editor.cpp msgid "Nearest" -msgstr "" +msgstr "Nærmeste" #: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp #: editor/property_editor.cpp @@ -301,8 +307,9 @@ msgid "Anim Insert Key" msgstr "Anim Sett Inn Nøkkel" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Transform tracks only apply to Spatial-based nodes." -msgstr "" +msgstr "Transformasjonsspor kan kun brukes pÃ¥ Spatial-baserte noder." #: editor/animation_track_editor.cpp msgid "" @@ -311,34 +318,43 @@ msgid "" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" msgstr "" +"Lydspor kan kun peke pÃ¥ noder av type:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "" +msgstr "Animasjonsspor kan kun peke pÃ¥ AnimationPlayer-noder." #: editor/animation_track_editor.cpp msgid "An animation player can't animate itself, only other players." msgstr "" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Not possible to add a new track without a root" -msgstr "" +msgstr "Ikke mulig Ã¥ legge til et nytt spor uten en rot" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Track path is invalid, so can't add a key." -msgstr "" +msgstr "Sporsti er ugyldig, sÃ¥ kan ikke legge til en nøkkel." #: editor/animation_track_editor.cpp +#, fuzzy msgid "Track is not of type Spatial, can't insert key" -msgstr "" +msgstr "Spor er ikke av type Spatial, kan ikke legge til nøkkel" #: editor/animation_track_editor.cpp +#, fuzzy msgid "Track path is invalid, so can't add a method key." -msgstr "" +msgstr "Sporsti er ugyldig, sÃ¥ kan ikke legge til metodenøkkel." #: editor/animation_track_editor.cpp msgid "Method not found in object: " -msgstr "" +msgstr "Metode ikke funnet i objekt: " #: editor/animation_track_editor.cpp msgid "Anim Move Keys" @@ -354,17 +370,20 @@ msgid "Anim Scale Keys" msgstr "Anim Skalér Nøkler" #: editor/animation_track_editor.cpp +#, fuzzy msgid "" "This option does not work for Bezier editing, as it's only a single track." msgstr "" +"Dette valget virker ikke pÃ¥ Bezier-redigering, siden det kun er ett enkelt " +"spor." #: editor/animation_track_editor.cpp msgid "Only show tracks from nodes selected in tree." -msgstr "" +msgstr "Vis kun spor fra noder valgt i treet." #: editor/animation_track_editor.cpp msgid "Group tracks by node or display them as plain list." -msgstr "" +msgstr "Grupper spor etter node eller vis dem i en enkel liste." #: editor/animation_track_editor.cpp #, fuzzy @@ -441,11 +460,11 @@ msgstr "Rydd-Opp-Animasjon" #: editor/animation_track_editor.cpp msgid "Pick the node that will be animated:" -msgstr "" +msgstr "Velg noden som skal animeres:" #: editor/animation_track_editor.cpp msgid "Use Bezier Curves" -msgstr "" +msgstr "Bruk Bezier-kurver" #: editor/animation_track_editor.cpp msgid "Anim. Optimizer" @@ -493,7 +512,7 @@ msgstr "Skaler Størrelsesforhold:" #: editor/animation_track_editor.cpp msgid "Select tracks to copy:" -msgstr "" +msgstr "Velg spor Ã¥ kopiere:" #: editor/animation_track_editor.cpp editor/editor_properties.cpp #: editor/plugins/animation_player_editor_plugin.cpp @@ -567,22 +586,13 @@ msgstr "Zoom Ut" msgid "Reset Zoom" msgstr "Nullstill Zoom" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Frontvisning" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Linje:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Kol:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -701,6 +711,7 @@ msgstr "Signaler" #: editor/connections_dialog.cpp msgid "Are you sure you want to remove all connections from this signal?" msgstr "" +"Er du sikker pÃ¥ at du ønsker Ã¥ fjerne alle koblinger fra dette signalet?" #: editor/connections_dialog.cpp #, fuzzy @@ -892,8 +903,8 @@ msgstr "Slett valgte filer?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Slett" @@ -1320,9 +1331,28 @@ msgid "Storing File:" msgstr "Lagrer Fil:" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "Ingen eksportmal funnet pÃ¥ forventet søkesti:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Pakking" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Malfil ble ikke funnet:" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "Tilpasset utgivelsesmal ikke funnet." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Malfil ble ikke funnet:" @@ -1489,7 +1519,7 @@ msgstr "Egenskaper" #: editor/editor_help.cpp msgid "Properties:" -msgstr "" +msgstr "Egenskaper:" #: editor/editor_help.cpp msgid "Methods" @@ -1646,15 +1676,16 @@ msgstr "Klasse:" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" -msgstr "" +msgstr "Egenskap:" #: editor/editor_inspector.cpp msgid "Set" msgstr "Sett" #: editor/editor_inspector.cpp +#, fuzzy msgid "Set Multiple:" -msgstr "" +msgstr "Sett Mange:" #: editor/editor_log.cpp msgid "Output:" @@ -1685,7 +1716,7 @@ msgstr "Feil ved lagring av ressurs!" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: scene/gui/dialogs.cpp msgid "OK" -msgstr "" +msgstr "OK" #: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Save Resource As..." @@ -1705,7 +1736,7 @@ msgstr "Feil under lagring." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Can't open '%s'. The file could have been moved or deleted." -msgstr "" +msgstr "Kan ikke Ã¥pne '%s'. Filen kan ha blitt flyttet eller slettet." #: editor/editor_node.cpp msgid "Error while parsing '%s'." @@ -1740,10 +1771,14 @@ 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 "" "This scene can't be saved because there is a cyclic instancing inclusion.\n" "Please resolve it and then attempt to save again." msgstr "" +"Denne scenen kan ikke lagres fordi det er en sirkulær " +"instansieringsinklusjon.\n" +"Vennligst løs feilen og forsøk Ã¥ lagre igjen." #: editor/editor_node.cpp msgid "" @@ -1755,7 +1790,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Kan ikke overskrive en scene som fortsatt er Ã¥pen!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2429,8 +2464,9 @@ msgid "Play Custom Scene" msgstr "Spill av Tilpasset Scene" #: editor/editor_node.cpp +#, fuzzy msgid "Changing the video driver requires restarting the editor." -msgstr "" +msgstr "Endring av videodriver krever omstart av redigeringsverktøyet." #: editor/editor_node.cpp editor/project_settings_editor.cpp #: editor/settings_config_dialog.cpp @@ -2642,23 +2678,23 @@ msgstr "Ring" #: editor/editor_properties.cpp msgid "On" -msgstr "" +msgstr "PÃ¥" #: editor/editor_properties.cpp msgid "Layer" -msgstr "" +msgstr "Lag" #: editor/editor_properties.cpp msgid "Bit %d, value %d" -msgstr "" +msgstr "Bit %d, verdi %d" #: editor/editor_properties.cpp msgid "[Empty]" -msgstr "" +msgstr "[Tom]" #: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp msgid "Assign..." -msgstr "" +msgstr "Tilordne..." #: editor/editor_properties.cpp #, fuzzy @@ -2666,16 +2702,22 @@ msgid "Invalid RID" msgstr ": Ugyldige argumenter: " #: editor/editor_properties.cpp +#, fuzzy msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." msgstr "" +"Den valgte ressursen (%s) svarer ikke til noen forventede verdier for denne " +"egenskapen (%s)." #: editor/editor_properties.cpp +#, fuzzy msgid "" "Can't create a ViewportTexture on resources saved as a file.\n" "Resource needs to belong to a scene." msgstr "" +"Kan ikke opprette en ViewportTexture pÃ¥ ressurser lagret som fil.\n" +"Ressurser mÃ¥ tilhøre en scene." #: editor/editor_properties.cpp msgid "" @@ -3417,6 +3459,19 @@ msgstr "Preset..." msgid "Reimport" msgstr "Reimporter" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Kunne ikke laste ressurs." @@ -4418,6 +4473,16 @@ msgid "Move CanvasItem" msgstr "Endre CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Kun anker" @@ -4610,7 +4675,7 @@ msgstr "Fjern Ben" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp msgid "View" -msgstr "Vis" +msgstr "Visning" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp @@ -6491,7 +6556,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6571,10 +6636,16 @@ msgid "(empty)" msgstr "(tom)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animasjoner" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animasjon" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Hastighet (FPS):" @@ -6583,8 +6654,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Animasjonsnavn:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7367,6 +7439,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7381,6 +7485,19 @@ msgstr "Er du sikker pÃ¥ at du vil Ã¥pne mer enn ett prosjekt?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8080,6 +8197,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8903,10 +9032,6 @@ msgid "Build Project" msgstr "Prosjekt" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Vis Filer" @@ -9314,6 +9439,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Ugyldig navn." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Navn er ikke en gyldig identifikator:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Navn er ikke en gyldig identifikator:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9350,6 +9559,54 @@ msgstr "Kunne ikke opprette mappe." msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Ugyldig navn." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Prosjektnavn:" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr ": Ugyldige argumenter: " + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Ugyldig navn." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9431,6 +9688,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9586,6 +9850,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9600,13 +9871,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9704,10 +9971,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9793,6 +10068,19 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Warnings:" +#~ msgstr "Advarsler:" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Frontvisning" + +#~ msgid "Line:" +#~ msgstr "Linje:" + +#~ msgid "Col:" +#~ msgstr "Kol:" + #, fuzzy #~ msgid "Split already exists." #~ msgstr "Eksisterer allerede" @@ -9802,10 +10090,6 @@ msgstr "" #~ msgstr "Legg til punkt" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr ": Ugyldige argumenter: " - -#, fuzzy #~ msgid "Remove Split" #~ msgstr "Fjern punkt" diff --git a/editor/translations/nl.po b/editor/translations/nl.po index 90c49fdba1..39cb255635 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -27,12 +27,14 @@ # Laurent Windels <laurentwindels@yahoo.com>, 2018. # rxadmin <r.van.eeghem@gmail.com>, 2018. # Peter Goelst <muis24@gmail.com>, 2019. +# Wouter Buckens <wou.buc@gmail.com>, 2019. +# Stijn Hinlopen <f.a.hinlopen@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:06+0000\n" -"Last-Translator: Peter Goelst <muis24@gmail.com>\n" +"PO-Revision-Date: 2019-01-26 21:22+0000\n" +"Last-Translator: Stijn Hinlopen <f.a.hinlopen@gmail.com>\n" "Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/" "nl/>\n" "Language: nl\n" @@ -40,12 +42,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp +#, fuzzy msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "Ongeldige type argument voor convert(), gebruik TYPE_* constanten." +msgstr "Ongeldig argumenttype aan convert(), gebruik TYPE_* constanten." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp @@ -569,22 +572,13 @@ msgstr "Uitzoomen" msgid "Reset Zoom" msgstr "Initialiseer Zoom" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Waarschuwingen:" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Vooraanzicht" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Regel:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Kolom:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -709,9 +703,8 @@ msgid "Disconnect All" msgstr "Losmaken" #: editor/connections_dialog.cpp -#, fuzzy msgid "Edit..." -msgstr "Bewerken" +msgstr "Bewerken..." #: editor/connections_dialog.cpp msgid "Go To Method" @@ -894,8 +887,8 @@ msgstr "Verwijder geselecteerde bestanden?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Verwijder" @@ -1004,14 +997,13 @@ msgid "Uncompressing Assets" msgstr "Bronnen aan het uitpakken" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Package installed successfully!" -msgstr "Pakket Succesvol Geïnstalleerd!" +msgstr "Pakket succesvol geïnstalleerd!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp msgid "Success!" -msgstr "Succes!" +msgstr "Geslaagd!" #: editor/editor_asset_installer.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -1320,9 +1312,27 @@ msgid "Storing File:" msgstr "Bestand Opslaan:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "Geen exporteersjabloon gevonden op het verwachte pad:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Inpakken" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Custom debug pakket niet gevonden." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "Custom release pakket niet gevonden." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Template bestand niet gevonden:" @@ -1336,18 +1346,16 @@ msgid "File Exists, Overwrite?" msgstr "Bestand Bestaat, Overschrijven?" #: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp -#, fuzzy msgid "Select This Folder" -msgstr "Selecteer Modus" +msgstr "Selecteer deze map" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp msgid "Copy Path" msgstr "Kopieer Pad" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp -#, fuzzy msgid "Open in File Manager" -msgstr "Weergeven in Bestandsbeheer" +msgstr "Openen in Bestandsbeheer" #: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp #: editor/project_manager.cpp @@ -1496,19 +1504,16 @@ msgid "Methods" msgstr "Methodes" #: editor/editor_help.cpp -#, fuzzy msgid "Methods:" -msgstr "Methodes" +msgstr "Methodes:" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties" -msgstr "Eigenschappen" +msgstr "Thema Eigenschappen" #: editor/editor_help.cpp -#, fuzzy msgid "Theme Properties:" -msgstr "Eigenschappen:" +msgstr "Thema Eigenschappen:" #: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp msgid "Signals:" @@ -1535,14 +1540,12 @@ msgid "Constants:" msgstr "Constanten:" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description" -msgstr "Beschrijving" +msgstr "Klassebeschrijving" #: editor/editor_help.cpp -#, fuzzy msgid "Class Description:" -msgstr "Omschrijving:" +msgstr "Klassebeschrijving:" #: editor/editor_help.cpp msgid "Online Tutorials:" @@ -1600,34 +1603,28 @@ msgid "Search Help" msgstr "Zoek Hulp" #: editor/editor_help_search.cpp -#, fuzzy msgid "Display All" -msgstr "Weergave Normaalvector" +msgstr "Alles tonen" #: editor/editor_help_search.cpp -#, fuzzy msgid "Classes Only" -msgstr "Klassen" +msgstr "Alleen Klassen" #: editor/editor_help_search.cpp -#, fuzzy msgid "Methods Only" -msgstr "Methodes" +msgstr "Alleen Methoden" #: editor/editor_help_search.cpp -#, fuzzy msgid "Signals Only" -msgstr "Signalen" +msgstr "Alleen Signalen" #: editor/editor_help_search.cpp -#, fuzzy msgid "Constants Only" -msgstr "Constanten" +msgstr "Alleen Constanten" #: editor/editor_help_search.cpp -#, fuzzy msgid "Properties Only" -msgstr "Eigenschappen" +msgstr "Alleen Eigenschappen" #: editor/editor_help_search.cpp #, fuzzy @@ -1640,13 +1637,12 @@ msgid "Member Type" msgstr "Leden" #: editor/editor_help_search.cpp -#, fuzzy msgid "Class" -msgstr "Klasse:" +msgstr "Klasse" #: editor/editor_inspector.cpp editor/project_settings_editor.cpp msgid "Property:" -msgstr "" +msgstr "Eigenschap:" #: editor/editor_inspector.cpp msgid "Set" @@ -1654,7 +1650,7 @@ msgstr "Zet" #: editor/editor_inspector.cpp msgid "Set Multiple:" -msgstr "" +msgstr "Zet Meerdere:" #: editor/editor_log.cpp msgid "Output:" @@ -1706,6 +1702,7 @@ msgstr "Fout bij het opslaan." #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp msgid "Can't open '%s'. The file could have been moved or deleted." msgstr "" +"Kan '%s' niet openen. Het bestand is mogelijks verplaatst of verwijderd." #: editor/editor_node.cpp msgid "Error while parsing '%s'." @@ -1755,7 +1752,7 @@ msgstr "" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "Can't overwrite scene that is still open!" -msgstr "" +msgstr "Kan geen scenes overschrijven die nog open zijn!" #: editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -2018,12 +2015,12 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Volgend script kon niet geladen worden: '%s'." #: editor/editor_node.cpp -#, fuzzy msgid "" "Unable to load addon script from path: '%s' There seems to be an error in " "the code, please check the syntax." msgstr "" -"Volgend script kon niet geladen worden: '%s' Script is niet in tool modus." +"Script kon niet geladen worden van het pad: '%s'. Er lijkt een fout in de " +"code te zijn, controleer de syntax." #: editor/editor_node.cpp msgid "" @@ -2086,9 +2083,8 @@ msgid "Play This Scene" msgstr "Speel Scene" #: editor/editor_node.cpp -#, fuzzy msgid "Close Tab" -msgstr "Sluit Andere Tabbladen" +msgstr "Tabblad sluiten" #: editor/editor_node.cpp msgid "Switch Scene Tab" @@ -2180,10 +2176,12 @@ msgid "Convert To..." msgstr "Converteer Naar..." #: editor/editor_node.cpp +#, fuzzy msgid "MeshLibrary..." -msgstr "MeshLibrary..." +msgstr "MeshBibilotheek..." #: editor/editor_node.cpp +#, fuzzy msgid "TileSet..." msgstr "TileSet..." @@ -2281,7 +2279,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Visible Navigation" -msgstr "Navigatie Zichtbaar" +msgstr "Navigatie zichtbaar" #: editor/editor_node.cpp msgid "" @@ -2293,7 +2291,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "Synchroniseer Scene Veranderingen" +msgstr "Sceneveranderingen synchroniseren" #: editor/editor_node.cpp msgid "" @@ -2309,7 +2307,7 @@ msgstr "" #: editor/editor_node.cpp msgid "Sync Script Changes" -msgstr "Synchroniseer Script Veranderingen" +msgstr "Scriptveranderingen synchroniseren" #: editor/editor_node.cpp msgid "" @@ -2324,8 +2322,9 @@ msgstr "" "efficiënter met het netwerk bestandssysteem." #: editor/editor_node.cpp +#, fuzzy msgid "Editor" -msgstr "Editor" +msgstr "Verwerker" #: editor/editor_node.cpp editor/settings_config_dialog.cpp msgid "Editor Settings" @@ -2340,18 +2339,16 @@ msgid "Toggle Fullscreen" msgstr "Schakel Volledig Scherm" #: editor/editor_node.cpp -#, fuzzy msgid "Open Editor Data/Settings Folder" -msgstr "Editor Instellingen" +msgstr "Open Editor Data/Instellingen Map" #: editor/editor_node.cpp msgid "Open Editor Data Folder" -msgstr "" +msgstr "Open Editor Data Map" #: editor/editor_node.cpp -#, fuzzy msgid "Open Editor Settings Folder" -msgstr "Editor Instellingen" +msgstr "Open Editor Instellingen Map" #: editor/editor_node.cpp editor/project_export.cpp msgid "Manage Export Templates" @@ -2431,13 +2428,12 @@ msgstr "Speel Aangepaste Scene" #: editor/editor_node.cpp msgid "Changing the video driver requires restarting the editor." -msgstr "" +msgstr "Om de video driver te veranderen moet de editor herstart worden." #: editor/editor_node.cpp editor/project_settings_editor.cpp #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Save & Restart" -msgstr "Opslaan & Afsluiten" +msgstr "Opslaan & Herstarten" #: editor/editor_node.cpp msgid "Spins when the editor window repaints!" @@ -2473,9 +2469,8 @@ msgid "Node" msgstr "Knooppunt" #: editor/editor_node.cpp -#, fuzzy msgid "Expand Bottom Panel" -msgstr "Klap alles uit" +msgstr "Vergroot onderste paneel" #: editor/editor_node.cpp scene/resources/visual_shader.cpp msgid "Output" @@ -2554,9 +2549,8 @@ msgid "Thumbnail..." msgstr "Voorbeeld..." #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Edit Plugin" -msgstr "Bewerk Poly" +msgstr "Bewerk Plugin" #: editor/editor_plugin_settings.cpp msgid "Installed Plugins:" @@ -2580,15 +2574,13 @@ msgid "Status:" msgstr "Staat:" #: editor/editor_plugin_settings.cpp -#, fuzzy msgid "Edit:" -msgstr "Bewerken" +msgstr "Bewerken:" #: editor/editor_profiler.cpp editor/plugins/animation_state_machine_editor.cpp #: editor/rename_dialog.cpp -#, fuzzy msgid "Start" -msgstr "Starten!" +msgstr "Start" #: editor/editor_profiler.cpp msgid "Measure:" @@ -2636,15 +2628,15 @@ msgstr "Aanroepen" #: editor/editor_properties.cpp msgid "On" -msgstr "" +msgstr "Aan" #: editor/editor_properties.cpp msgid "Layer" -msgstr "" +msgstr "Laag" #: editor/editor_properties.cpp msgid "Bit %d, value %d" -msgstr "" +msgstr "Bit %d, waarde %d" #: editor/editor_properties.cpp msgid "[Empty]" @@ -2652,18 +2644,19 @@ msgstr "[Leeg]" #: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp msgid "Assign..." -msgstr "" +msgstr "Toewijzen..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "Ongeldig Path" +msgstr "Ongeldige RID" #: editor/editor_properties.cpp msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." msgstr "" +"De geselecteerde hulpbron (%s) komt niet overeen met het verwachte type van " +"deze eigenschap (%s)." #: editor/editor_properties.cpp msgid "" @@ -2685,11 +2678,11 @@ msgstr "Kies een Aanzicht portaal" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New Script" -msgstr "" +msgstr "Nieuw Script" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "New %s" -msgstr "" +msgstr "Nieuw %s" #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Make Unique" @@ -2710,44 +2703,39 @@ msgid "Paste" msgstr "Plakken" #: editor/editor_properties.cpp editor/property_editor.cpp -#, fuzzy msgid "Convert To %s" -msgstr "Verbind Aan Node:" +msgstr "Omzetten naar %s" #: editor/editor_properties.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp -#, fuzzy msgid "Open Editor" -msgstr "Openen in Editor" +msgstr "Editor Openen" #: editor/editor_properties.cpp editor/property_editor.cpp -#, fuzzy msgid "Selected node is not a Viewport!" -msgstr "Geselecteerde ..... is geen Aanzicht Portaal!" +msgstr "Geselecteerde knoop is geen Viewport!" #: editor/editor_properties_array_dict.cpp msgid "Size: " -msgstr "" +msgstr "Grootte: " #: editor/editor_properties_array_dict.cpp msgid "Page: " -msgstr "" +msgstr "Pagina: " #: editor/editor_properties_array_dict.cpp -#, fuzzy msgid "New Key:" -msgstr "Nieuwe naam:" +msgstr "Nieuwe Sleutel:" #: editor/editor_properties_array_dict.cpp -#, fuzzy msgid "New Value:" -msgstr "Nieuwe naam:" +msgstr "Nieuwe Waarde:" #: editor/editor_properties_array_dict.cpp msgid "Add Key/Value Pair" -msgstr "" +msgstr "Sleutel-Waarde Paar Toevoegen" #: editor/editor_properties_array_dict.cpp #: editor/plugins/theme_editor_plugin.cpp @@ -2840,9 +2828,8 @@ msgid "Can't open export templates zip." msgstr "Kan exportsjablonen niet openen." #: editor/export_template_manager.cpp -#, fuzzy msgid "Invalid version.txt format inside templates: %s." -msgstr "Ongeldig version.txt formaat in sjablonen." +msgstr "Ongeldig version.txt formaat in sjablonen: %s." #: editor/export_template_manager.cpp msgid "No version.txt found inside templates." @@ -2907,6 +2894,8 @@ msgid "" "Templates installation failed. The problematic templates archives can be " "found at '%s'." msgstr "" +"Installatie van templates mislukt. De problematische template archieven " +"kunnen gevonden worden op '%s'." #: editor/export_template_manager.cpp msgid "Error requesting url: " @@ -2987,9 +2976,8 @@ msgid "Download Templates" msgstr "Download Sjablonen" #: editor/export_template_manager.cpp -#, fuzzy msgid "Select mirror from list: (Shift+Click: Open in Browser)" -msgstr "Selecteer mirror uit lijst: " +msgstr "Selecteer mirror uit lijst: (Shift-klik: In Browser openen)" #: editor/file_type_cache.cpp msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" @@ -2998,9 +2986,8 @@ msgstr "" "bewaard!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Favorites" -msgstr "Favorieten:" +msgstr "Favorieten" #: editor/filesystem_dock.cpp msgid "Cannot navigate to '%s' as it has not been found in the file system!" @@ -3009,9 +2996,8 @@ msgstr "" "is!" #: editor/filesystem_dock.cpp -#, fuzzy msgid "View items as a grid of thumbnails." -msgstr "Toon items in een rooster van miniaturen" +msgstr "Toon items in een miniatuurraster." #: editor/filesystem_dock.cpp #, fuzzy @@ -3085,14 +3071,12 @@ msgid "Instance" msgstr "Instantie" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Add to favorites" -msgstr "Favorieten:" +msgstr "Aan favorieten toevoegen" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Remove from favorites" -msgstr "Verwijderen uit Groep" +msgstr "Uit favorieten verwijderen" #: editor/filesystem_dock.cpp msgid "Edit Dependencies..." @@ -3115,24 +3099,20 @@ msgid "Move To..." msgstr "Verplaats Naar..." #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New Script..." -msgstr "Open Script Snel..." +msgstr "Nieuw Script..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "New Resource..." -msgstr "Resource Opslaan Als..." +msgstr "Nieuwe Hulpbron..." #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Expand All" -msgstr "Klap alles uit" +msgstr "Alles uitklappen" #: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp -#, fuzzy msgid "Collapse All" -msgstr "Klap alles in" +msgstr "Alles inklappen" #: editor/filesystem_dock.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -3154,14 +3134,12 @@ msgid "Re-Scan Filesystem" msgstr "Bestandssysteem Opnieuw Scannen" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Toggle split mode" -msgstr "Toggle Modus" +msgstr "Gesplitste modus omschakelen" #: editor/filesystem_dock.cpp -#, fuzzy msgid "Search files" -msgstr "Zoek Klasses" +msgstr "Zoek bestanden" #: editor/filesystem_dock.cpp msgid "Instance the selected scene(s) as child of the selected node." @@ -3182,13 +3160,12 @@ msgid "Move" msgstr "Verplaatsen" #: editor/filesystem_dock.cpp -#, fuzzy msgid "There is already file or folder with the same name in this location." -msgstr "Er is al een map in dit pad met dezelfde naam." +msgstr "Er is al een bestand of map met dezelfde naam op dit pad." #: editor/filesystem_dock.cpp msgid "Overwrite" -msgstr "" +msgstr "Overschrijven" #: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -3200,9 +3177,8 @@ msgid "Find in Files" msgstr "Vind Tegel" #: editor/find_in_files.cpp -#, fuzzy msgid "Find:" -msgstr "Zoeken" +msgstr "Zoeken:" #: editor/find_in_files.cpp #, fuzzy @@ -3210,9 +3186,8 @@ msgid "Folder:" msgstr "Map Maken" #: editor/find_in_files.cpp -#, fuzzy msgid "Filters:" -msgstr "Filter:" +msgstr "Filters:" #: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/script_text_editor.cpp @@ -3228,24 +3203,20 @@ msgid "Cancel" msgstr "Annuleer" #: editor/find_in_files.cpp -#, fuzzy msgid "Find: " -msgstr "Zoeken" +msgstr "Zoeken: " #: editor/find_in_files.cpp -#, fuzzy msgid "Replace: " -msgstr "Vervangen" +msgstr "Vervangen: " #: editor/find_in_files.cpp -#, fuzzy msgid "Replace all (no undo)" -msgstr "Alle Vervangen" +msgstr "Alle vervangen (geen ongedaan maken)" #: editor/find_in_files.cpp -#, fuzzy msgid "Searching..." -msgstr "Opslaan..." +msgstr "Aan het zoeken..." #: editor/find_in_files.cpp #, fuzzy @@ -3253,33 +3224,28 @@ msgid "Search complete" msgstr "Zoek Tekst" #: editor/groups_editor.cpp -#, fuzzy msgid "Group name already exists." -msgstr "FOUTMELDING: Animatie naam bestaat al!" +msgstr "Groepnaam bestaat al." #: editor/groups_editor.cpp -#, fuzzy msgid "Invalid group name." -msgstr "Ongeldige naam." +msgstr "Ongeldige groepnaam." #: editor/groups_editor.cpp editor/node_dock.cpp msgid "Groups" msgstr "Groepen" #: editor/groups_editor.cpp -#, fuzzy msgid "Nodes not in Group" -msgstr "Toevoegen aan Groep" +msgstr "Knopen niet in de groep" #: editor/groups_editor.cpp editor/scene_tree_dock.cpp -#, fuzzy msgid "Filter nodes" -msgstr "Filter:" +msgstr "Filter knopen" #: editor/groups_editor.cpp -#, fuzzy msgid "Nodes in Group" -msgstr "Toevoegen aan Groep" +msgstr "Knopen in de groep" #: editor/groups_editor.cpp msgid "Add to Group" @@ -3290,9 +3256,8 @@ msgid "Remove from Group" msgstr "Verwijderen uit Groep" #: editor/groups_editor.cpp -#, fuzzy msgid "Manage Groups" -msgstr "Groepen" +msgstr "Groepen beheren" #: editor/import/resource_importer_scene.cpp msgid "Import as Single Scene" @@ -3395,6 +3360,20 @@ msgstr "Voorinstelling..." msgid "Reimport" msgstr "Herimporteer" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +#, fuzzy +msgid "Changing the type of an imported file requires editor restart." +msgstr "Om de video driver te veranderen moet de editor herstart worden." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Mislukt om resource te laden." @@ -3423,9 +3402,8 @@ msgid "Paste Params" msgstr "Plak Parameters" #: editor/inspector_dock.cpp -#, fuzzy msgid "Edit Resource Clipboard" -msgstr "Bronnen klembord is leeg!" +msgstr "Hulpbron in klembord bewerken" #: editor/inspector_dock.cpp msgid "Copy Resource" @@ -3472,9 +3450,8 @@ msgid "Object properties." msgstr "Objecteigenschappen." #: editor/inspector_dock.cpp -#, fuzzy msgid "Filter properties" -msgstr "Filter:" +msgstr "Filter eigenschappen" #: editor/inspector_dock.cpp msgid "Changes may be lost!" @@ -3489,86 +3466,74 @@ msgid "Select a Node to edit Signals and Groups." msgstr "Selecteer een Node om Signalen en Groepen aan te passen." #: editor/plugin_config_dialog.cpp -#, fuzzy msgid "Edit a Plugin" -msgstr "Bewerk Poly" +msgstr "Een plugin bewerken" #: editor/plugin_config_dialog.cpp -#, fuzzy msgid "Create a Plugin" -msgstr "Subscriptie Maken" +msgstr "Een plugin aanmaken" #: editor/plugin_config_dialog.cpp -#, fuzzy msgid "Plugin Name:" -msgstr "Plugins" +msgstr "Pluginnaam:" #: editor/plugin_config_dialog.cpp msgid "Subfolder:" -msgstr "" +msgstr "Submap:" #: editor/plugin_config_dialog.cpp msgid "Language:" -msgstr "" +msgstr "Taal:" #: editor/plugin_config_dialog.cpp -#, fuzzy msgid "Script Name:" -msgstr "Projectnaam:" +msgstr "Scriptnaam:" #: editor/plugin_config_dialog.cpp msgid "Activate now?" -msgstr "" +msgstr "Nu activeren?" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Polygon" -msgstr "Creëer Poly" +msgstr "Veelhoek aanmaken" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Edit Polygon" -msgstr "Bewerk Poly" +msgstr "Veelhoek bewerken" #: editor/plugins/abstract_polygon_2d_editor.cpp msgid "Insert Point" msgstr "Punt Toevoegen" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Edit Polygon (Remove Point)" -msgstr "Bewerk Poly (Verwijder punt)" +msgstr "Veelhoek bewerken (punt verwijderen)" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Remove Polygon And Point" -msgstr "Verwijder Poly en punt" +msgstr "Veelhoek en punt verwijderen" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Create points." -msgstr "Verwijder punten" +msgstr "Punten aanmaken." #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "" "Edit points.\n" "LMB: Move Point\n" "RMB: Erase Point" msgstr "" -"Bewerk bestaande polygoon:\n" -"LMK: Verplaats punt.\n" -"Ctrl+LMK: Splits segment.\n" -"RMK: Wis punt." +"Punten bewerken:\n" +"LMK: Punt verplaasten\n" +"RMK: Punt wissen" #: editor/plugins/abstract_polygon_2d_editor.cpp #: editor/plugins/animation_blend_space_1d_editor.cpp -#, fuzzy msgid "Erase points." -msgstr "RMB: Verwijder Punt." +msgstr "Punten wissen." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3582,15 +3547,15 @@ msgstr "Voeg Animatie Toe" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Load..." -msgstr "Laden" +msgstr "Laden..." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_state_machine_editor.cpp msgid "This type of node can't be used. Only root nodes are allowed." msgstr "" +"Dit knooptype kan niet gebruikt worden. Alleen wortelknopen zijn toegestaan." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3600,16 +3565,19 @@ msgid "" "AnimationTree is inactive.\n" "Activate to enable playback, check node warnings if activation fails." msgstr "" +"AnimationTree is niet actief.\n" +"Activeer om te kunnen afspelen, bekijk node waarschuwingen indien activatie " +"mislukt." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Set the blending position within the space" -msgstr "" +msgstr "Zet de overgangspositie binnen de ruimte" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Select and move points, create points with RMB." -msgstr "" +msgstr "Selecteer en verplaats punten, maak punten aan met RMK." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp @@ -3618,26 +3586,23 @@ msgstr "" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Point" -msgstr "Beweeg Punt" +msgstr "Punt" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Open Animation Node" -msgstr "Animatie Node" +msgstr "Animatieknoop openen" #: editor/plugins/animation_blend_space_2d_editor.cpp -#, fuzzy msgid "Triangle already exists" -msgstr "FOUTMELDING: Animatie naam bestaat al!" +msgstr "Driehoek bestaat al" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "BlendSpace2D does not belong to an AnimationTree node." -msgstr "" +msgstr "BlendSpace2D hoort niet bij een AnimationTree knoop." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "No triangles exist, so no blending can take place." @@ -3645,11 +3610,11 @@ msgstr "" #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Create triangles by connecting points." -msgstr "" +msgstr "Maak driehoeken door punten te verbinden." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Erase points and triangles." -msgstr "" +msgstr "Punten en driehoeken wissen." #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Generate blend triangles automatically (instead of manually)" @@ -3673,37 +3638,40 @@ msgstr "" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Unable to connect, port may be in use or connection may be invalid." msgstr "" +"Verbinding niet mogelijk, poort kan in gebruik zijn of de verbinding kan " +"ongeldig zijn." #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "No animation player set, so unable to retrieve track names." -msgstr "" +msgstr "Geen animatiespeler ingesteld, spoornamen konden niet worden gevonden." #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Player path set is invalid, so unable to retrieve track names." -msgstr "" +msgstr "Animatiespelerpad is ongeldig, spoornamen konden niet worden gevonden." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp +#, fuzzy msgid "" "Animation player has no valid root node path, so unable to retrieve track " "names." msgstr "" +"Animatiespeler heeft geen geldig pad voor de wortelknoop, spoornamen konden " +"niet worden gevonden." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Add Node..." -msgstr "Node Toevoegen" +msgstr "Voeg knoop toe..." #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Edit Filtered Tracks:" -msgstr "Filters Bewerken" +msgstr "Bewerk gefilterde sporen:" #: editor/plugins/animation_blend_tree_editor_plugin.cpp msgid "Enable filtering" -msgstr "" +msgstr "Activeer filtering" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -3731,14 +3699,12 @@ msgid "Remove Animation" msgstr "Verwijder Animatie" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Invalid animation name!" -msgstr "FOUTMELDING: Invalide animatie naam!" +msgstr "Ongeldige animatienaam!" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Animation name already exists!" -msgstr "FOUTMELDING: Animatie naam bestaat al!" +msgstr "Animatienaam bestaat al!" #: editor/plugins/animation_player_editor_plugin.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -3748,12 +3714,11 @@ msgstr "Animatie Hernoemen" #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Blend Next Changed" -msgstr "Meng Volgende Aangepast" +msgstr "Meng met volgende aanpassing" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Change Blend Time" -msgstr "Wijzig Meng Tijd" +msgstr "Wijzig overlooptijd" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" @@ -3764,14 +3729,12 @@ msgid "Duplicate Animation" msgstr "Dupliceer Animatie" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation to copy!" -msgstr "FOUTMELDING: Geen animatie om te kopiëren!" +msgstr "Geen animatie om te kopiëren!" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation resource on clipboard!" -msgstr "FOUTMELDING: Geen animatie resource op klembord!" +msgstr "Geen animatie hulpbron op klembord!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" @@ -3782,9 +3745,8 @@ msgid "Paste Animation" msgstr "Plak Animatie" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "No animation to edit!" -msgstr "FOUTMELDING: Geen animatie om aan te passen!" +msgstr "Geen animatie om aan te passen!" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" @@ -3828,14 +3790,13 @@ msgid "New" msgstr "Nieuw" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Edit Transitions..." -msgstr "Transities" +msgstr "Bewerk overgangen..." #: editor/plugins/animation_player_editor_plugin.cpp #, fuzzy msgid "Open in Inspector" -msgstr "Openen in Editor" +msgstr "In Inspecteur openen" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -3894,9 +3855,8 @@ msgid "Include Gizmos (3D)" msgstr "Inclusief Gizmos (3D)" #: editor/plugins/animation_player_editor_plugin.cpp -#, fuzzy msgid "Pin AnimationPlayer" -msgstr "Plak Animatie" +msgstr "Animatiespeler vastzetten" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" @@ -3928,27 +3888,28 @@ msgstr "Cross-animatie mixtijden" #: editor/plugins/animation_state_machine_editor.cpp msgid "End" -msgstr "" +msgstr "Einde" #: editor/plugins/animation_state_machine_editor.cpp msgid "Immediate" -msgstr "" +msgstr "Onmiddellijk" #: editor/plugins/animation_state_machine_editor.cpp msgid "Sync" -msgstr "" +msgstr "Synchroniseren" #: editor/plugins/animation_state_machine_editor.cpp msgid "At End" -msgstr "" +msgstr "Aan het einde" #: editor/plugins/animation_state_machine_editor.cpp msgid "Travel" msgstr "" #: editor/plugins/animation_state_machine_editor.cpp +#, fuzzy msgid "Start and end nodes are needed for a sub-transition." -msgstr "" +msgstr "Start- en eindknopen zijn nodig voor een sub-overgang" #: editor/plugins/animation_state_machine_editor.cpp #, fuzzy @@ -3961,21 +3922,21 @@ msgid "" "RMB to add new nodes.\n" "Shift+LMB to create connections." msgstr "" +"Knopen selecteren en bewegen.\n" +"RMK om nieuwe knopen toe te voegen.\n" +"Shift-LMK om verbindingen aan te maken." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Create new nodes." -msgstr "Maake Nieuwe %s" +msgstr "Nieuwe knopen maken." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Connect nodes." -msgstr "Verbind Aan Node:" +msgstr "Knopen verbinden." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Remove selected node or transition." -msgstr "Verwijder geselecteerde track." +msgstr "De uitgekozen knoop of overgang verwijderen." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." @@ -3986,9 +3947,8 @@ msgid "Set the end animation. This is useful for sub-transitions." msgstr "" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Transition: " -msgstr "Transitie" +msgstr "Overgang: " #: editor/plugins/animation_tree_editor_plugin.cpp #: editor/plugins/animation_tree_player_editor_plugin.cpp @@ -4090,8 +4050,9 @@ msgid "OneShot Node" msgstr "OneShot Node" #: editor/plugins/animation_tree_player_editor_plugin.cpp +#, fuzzy msgid "Mix Node" -msgstr "Mix Node" +msgstr "Meng Node" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Blend2 Node" @@ -4114,8 +4075,9 @@ msgid "TimeSeek Node" msgstr "TimeSeek Node" #: editor/plugins/animation_tree_player_editor_plugin.cpp +#, fuzzy msgid "Transition Node" -msgstr "Transition Node" +msgstr "Overgangsknoop" #: editor/plugins/animation_tree_player_editor_plugin.cpp msgid "Import Animations..." @@ -4182,14 +4144,12 @@ msgid "Asset Download Error:" msgstr "Asset Download Foutmelding:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading (%s / %s)..." -msgstr "Bezig met downloaden" +msgstr "Bezig met neerladen (%s / %s)..." #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Downloading..." -msgstr "Bezig met downloaden" +msgstr "Bezig met neerladen..." #: editor/plugins/asset_library_editor_plugin.cpp msgid "Resolving..." @@ -4216,14 +4176,12 @@ msgid "Download for this asset is already in progress!" msgstr "Download voor dit onderdeel is al bezig!" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "First" -msgstr "eerste" +msgstr "Eerste" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Previous" -msgstr "Vorig tabblad" +msgstr "Vorige" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Next" @@ -4231,7 +4189,7 @@ msgstr "Volgende" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Last" -msgstr "" +msgstr "Laatste" #: editor/plugins/asset_library_editor_plugin.cpp #: modules/gdnative/gdnative_library_editor_plugin.cpp @@ -4358,34 +4316,41 @@ msgid "Create new horizontal and vertical guides" msgstr "Maak nieuwe horizontale en verticale gidsen" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move pivot" -msgstr "Verplaats Draaipunt" +msgstr "Draaipunt verplaatsen" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem" -msgstr "CanvasItem Bewerken" +msgstr "CanvasItem roteren" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move anchor" -msgstr "Verplaats Actie" +msgstr "Anker verplaatsen" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Resize CanvasItem" -msgstr "CanvasItem Bewerken" +msgstr "Formaat van CanvasItem wijzigen" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "CanvasItem Bewerken" +msgstr "Schaal CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem" -msgstr "CanvasItem Bewerken" +msgstr "Verplaats CanvasItem" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"Waarschuwing: De positie en grootte van de kinderen van een houder worden " +"alleen door hun ouder bepaald." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" @@ -4408,13 +4373,14 @@ msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." msgstr "" +"Waarschuwing: De positie en grootte van de kinderen van een houder worden " +"alleen door hun ouder bepaald." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp -#, fuzzy msgid "Zoom Reset" -msgstr "Uitzoomen" +msgstr "Zoom terugzetten" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Select Mode" @@ -4447,9 +4413,8 @@ msgid "Rotate Mode" msgstr "Rotatiemodus" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale Mode" -msgstr "Schaalstand (R)" +msgstr "Schaalwijze" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4469,18 +4434,16 @@ msgid "Pan Mode" msgstr "Verschuif Modus" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle snapping." -msgstr "Snappen Aan- of Uitschakelen" +msgstr "Automatisch schikken omschakelen." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Snap" msgstr "Gebruik Uitlijnen" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snapping Options" -msgstr "Uitlijnen opties" +msgstr "Opties voor automatisch schikken" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to grid" @@ -4520,9 +4483,8 @@ msgid "Snap to node sides" msgstr "Uitlijnen naar node zijden" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to node center" -msgstr "Snap naar node anker" +msgstr "Schik automatisch aan middelpunt knoop" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to other nodes" @@ -4555,9 +4517,8 @@ msgstr "" "object." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "Singleton" +msgstr "Skeletinstellingen" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -6462,7 +6423,7 @@ msgid "Post" msgstr "Post" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6544,10 +6505,16 @@ msgid "(empty)" msgstr "(leeg)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animaties" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animatie" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Snelheid (FPS):" @@ -6556,7 +6523,8 @@ msgid "Loop" msgstr "Lus" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Animatie Frames" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6788,9 +6756,8 @@ msgid "Erase TileMap" msgstr "" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Find Tile" -msgstr "Vind Tegel" +msgstr "Tegel vinden" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" @@ -6813,42 +6780,37 @@ msgid "Pick Tile" msgstr "Kies Tegel" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Copy Selection" -msgstr "Verwijder Selectie" +msgstr "Selectie kopiëren" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate left" -msgstr "Rotatiemodus" +msgstr "Naar links draaien" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Rotate right" -msgstr "Roteer Polygon" +msgstr "Naar rechts draaien" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip horizontally" -msgstr "" +msgstr "Horizontaal omdraaien" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Flip vertically" -msgstr "" +msgstr "Verticaal omdraaien" #: editor/plugins/tile_map_editor_plugin.cpp #, fuzzy msgid "Clear transform" -msgstr "Transformatie" +msgstr "Transform vrijmaken" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Add Texture(s) to TileSet." -msgstr "Voeg Node(s) Toe Uit Tree" +msgstr "Texture(n) aan TileSet toevoegen." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected Texture from TileSet." -msgstr "Verwijder Signaal" +msgstr "Geselecteerde Texture uit TileSet verwijderen." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -6860,43 +6822,44 @@ msgstr "Vervoeg vanuit Scene" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." -msgstr "" +msgstr "Bitmasker kopiëren." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste bitmask." -msgstr "Plak Animatie" +msgstr "Animatie plakken." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Erase bitmask." -msgstr "RMB: Verwijder Punt." +msgstr "Bitmasker wissen." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create a new polygon." -msgstr "Creëer een compleet nieuwe polygon." +msgstr "Nieuwe veelhoek aanmaken." #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Keep polygon inside region Rect." -msgstr "" +msgstr "Hou veelhoek in Rect bereik" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." msgstr "" +"Activeer automatisch schikken en toon raster (configureerbaar in de " +"Inspecteur)." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" -msgstr "" +msgstr "Tegelnamen tonen (Alt-toets ingedrukt houden)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "Verwijder Signaal" +msgstr "" +"Geselecteerde Texture verwijderen? Alle tegels die ervan gebruikt maken " +"zullen verwijderd worden." #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." -msgstr "" +msgstr "Geen Texture geselecteerd om te verwijderen." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." @@ -7344,6 +7307,38 @@ msgid "Browse" msgstr "Bladeren" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Naamloos Project" @@ -7358,6 +7353,19 @@ msgstr "Weet je zeker dat je meer dan één project wilt openen?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8068,6 +8076,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8886,10 +8906,6 @@ msgid "Build Project" msgstr "Project" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Bekijk Bestanden" @@ -9314,6 +9330,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Ongeldige klassenaam" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Naam is geen geldige identifier:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Naam is geen geldige identifier:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9352,6 +9452,58 @@ msgstr "Map kon niet gemaakt worden." msgid "Using default boot splash image." msgstr "Map kon niet gemaakt worden." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Ongeldige unieke naam." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "Ongeldig product GUID." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "Ongeldige uitgever GUID." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Ongeldige achtergrondkleur." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Ongeldige afmetingen voor Store Logo afbeelding (moet 50×50 zijn)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" +"Ongeldige afmetingen van vierkante 44×44 logo afbeelding (moet 44×44 zijn)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" +"Ongeldige afmetingen van vierkante 71×71 logo afbeelding (moet 71×71 zijn)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" +"Ongeldige afmetingen van vierkante 150×150 logo afbeelding (moet 150×150 " +"zijn)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" +"Ongeldige afmetingen van vierkante 310×310 logo afbeelding (moet 310×310 " +"zijn)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" +"Ongeldige afmetingen van brede 310×150 logo afbeelding (moet 310×150 zijn)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Ongeldige afmetingen van splash screen afbeelding (moet 620×300 zijn)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9460,6 +9612,13 @@ msgstr "" "ParallaxLayer node werkt alleen wanneer het een kind is van een " "ParallaxBackground node." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9630,6 +9789,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9645,14 +9811,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow2D werkt alleen wanneer het een kind van een Path2D node is." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D werkt alleen wanneer het een kind van een Path2D node is." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9756,10 +9917,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Raw-modus" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Huidige kleur als een preset toevoegen" @@ -9834,14 +10003,12 @@ msgid "Invalid font size." msgstr "Ongeldige lettertype grootte." #: scene/resources/visual_shader.cpp -#, fuzzy msgid "Input" -msgstr "Voeg invoer toe" +msgstr "Invoer" #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid source for shader." -msgstr "Ongeldige lettertype grootte." +msgstr "Ongeldige bron voor shader." #: servers/visual/shader_language.cpp msgid "Assignment to function." @@ -9855,6 +10022,23 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Warnings:" +#~ msgstr "Waarschuwingen:" + +#~ msgid "Font Size:" +#~ msgstr "Lettertypegrootte:" + +#~ msgid "Line:" +#~ msgstr "Regel:" + +#~ msgid "Col:" +#~ msgstr "Kolom:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D werkt alleen wanneer het een kind van een Path2D node is." + #, fuzzy #~ msgid "Split already exists." #~ msgstr "Bestaat al" @@ -10450,63 +10634,6 @@ msgstr "" #~ msgid "Error creating the package signature." #~ msgstr "Error bij het maken van het pakket signatuur." -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "Geen export templates gevonden.\n" -#~ "Download en installeer export templates." - -#~ msgid "Custom debug package not found." -#~ msgstr "Custom debug pakket niet gevonden." - -#~ msgid "Custom release package not found." -#~ msgstr "Custom release pakket niet gevonden." - -#~ msgid "Invalid unique name." -#~ msgstr "Ongeldige unieke naam." - -#~ msgid "Invalid product GUID." -#~ msgstr "Ongeldig product GUID." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "Ongeldige uitgever GUID." - -#~ msgid "Invalid background color." -#~ msgstr "Ongeldige achtergrondkleur." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "Ongeldige afmetingen voor Store Logo afbeelding (moet 50×50 zijn)." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "" -#~ "Ongeldige afmetingen van vierkante 44×44 logo afbeelding (moet 44×44 " -#~ "zijn)." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "" -#~ "Ongeldige afmetingen van vierkante 71×71 logo afbeelding (moet 71×71 " -#~ "zijn)." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "" -#~ "Ongeldige afmetingen van vierkante 150×150 logo afbeelding (moet 150×150 " -#~ "zijn)." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "" -#~ "Ongeldige afmetingen van vierkante 310×310 logo afbeelding (moet 310×310 " -#~ "zijn)." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "" -#~ "Ongeldige afmetingen van brede 310×150 logo afbeelding (moet 310×150 " -#~ "zijn)." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "Ongeldige afmetingen van splash screen afbeelding (moet 620×300 zijn)." - #~ msgid "Node From Scene" #~ msgstr "Node Uit Scene" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index 763ee3e60c..5e8902e5a8 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -29,12 +29,13 @@ # Dariusz Siek <dariuszynski@gmail.com>, 2018. # Szymon Nowakowski <smnbdg13@gmail.com>, 2019. # Nie Powiem <blazek10@tlen.pl>, 2019. +# Sebastian Hojka <sibibibi1@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:07+0000\n" -"Last-Translator: Nie Powiem <blazek10@tlen.pl>\n" +"PO-Revision-Date: 2019-02-06 01:09+0000\n" +"Last-Translator: Tomek <kobewi4e@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" "Language: pl\n" @@ -43,7 +44,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -568,21 +569,13 @@ msgstr "Oddal" msgid "Reset Zoom" msgstr "Wyzeruj przybliżenie" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Ostrzeżenia:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Rozmiar czcionki:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Linia:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Ostrzeżenia" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Kolumna:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -883,8 +876,8 @@ msgstr "Usunąć zaznaczone pliki?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "UsuÅ„" @@ -1039,7 +1032,6 @@ msgid "Toggle Audio Bus Bypass Effects" msgstr "Przełącz ominiÄ™cie efektów w magistrali audio" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Select Audio Bus Send" msgstr "Wybierz szynÄ™ wysyÅ‚ki audio" @@ -1307,9 +1299,25 @@ msgid "Storing File:" msgstr "Zapisywanie pliku:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "Nie znaleziono szablonu eksportu w przewidywanej lokalizacji:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Pakowanie" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "Nie znaleziono wÅ‚asnego szablonu debugowania." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "Nie znaleziono wÅ‚asnego szablonu wydania." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Nie znaleziono pliku szablonu:" @@ -1710,6 +1718,8 @@ msgid "" "This scene can't be saved because there is a cyclic instancing inclusion.\n" "Please resolve it and then attempt to save again." msgstr "" +"Ta scena nie może zostać zapisana, ponieważ istnieje cykliczna inkluzja.\n" +"Rozwiąż to i spróbuj zapisać ponownie." #: editor/editor_node.cpp msgid "" @@ -2601,15 +2611,16 @@ msgid "Assign..." msgstr "Przypisz..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "NieprawidÅ‚owa Å›cieżka" +msgstr "NieprawidÅ‚owy RID" #: editor/editor_properties.cpp msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." msgstr "" +"Wybrany zasób (%s) nie zgadza siÄ™ z żadnym rodzajem przewidywanym dla tego " +"użycia (%s)." #: editor/editor_properties.cpp msgid "" @@ -3180,7 +3191,6 @@ msgid "Group name already exists." msgstr "Nazwa grupy już istnieje." #: editor/groups_editor.cpp -#, fuzzy msgid "Invalid group name." msgstr "NiewÅ‚aÅ›ciwa nazwa grupy." @@ -3315,6 +3325,21 @@ msgstr "Ustawienie predefiniowane..." msgid "Reimport" msgstr "Importuj ponownie" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "Zapisz sceny, re-importuj i zrestartuj" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "Zmiana rodzaju importowanego pliku wymaga restartu edytora." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"OSTRZEÅ»ENIE: Istnieje zawartość używajÄ…ca tego zasobu, która może przestać " +"dziaÅ‚ać prawidÅ‚owo." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Nie udaÅ‚o siÄ™ wczytać zasobu." @@ -3438,7 +3463,6 @@ msgid "Create Polygon" msgstr "Utwórz wielokÄ…t" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Edit Polygon" msgstr "Edytuj wielokÄ…t" @@ -3447,12 +3471,10 @@ msgid "Insert Point" msgstr "Wstaw punkt" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Edit Polygon (Remove Point)" -msgstr "Edytuj wielokÄ…t (usuÅ„ punkty)" +msgstr "Edytuj wielokÄ…t (usuÅ„ punkt)" #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "Remove Polygon And Point" msgstr "Usuń wielokÄ…t i punkt" @@ -3463,7 +3485,6 @@ msgid "Create points." msgstr "Utwórz punkty." #: editor/plugins/abstract_polygon_2d_editor.cpp -#, fuzzy msgid "" "Edit points.\n" "LMB: Move Point\n" @@ -4285,6 +4306,16 @@ msgid "Move CanvasItem" msgstr "PrzesuÅ„ CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Tylko zakotwiczenia" @@ -6305,7 +6336,7 @@ msgid "Post" msgstr "Po" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6382,7 +6413,13 @@ msgid "(empty)" msgstr "(pusty)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "Animacje" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" msgstr "Animacje" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6394,7 +6431,8 @@ msgid "Loop" msgstr "PÄ™tla" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Klatki animacji" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7167,6 +7205,38 @@ msgid "Browse" msgstr "Szukaj" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projekt bez nazwy" @@ -7181,6 +7251,19 @@ msgstr "Czy jesteÅ› pewny że chcesz otworzyć wiÄ™cej niż jeden projekt?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7880,6 +7963,18 @@ msgid "Duplicate Node(s)" msgstr "Duplikuj wÄ™zeÅ‚(y)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "UsuÅ„ wÄ™zeÅ‚(y)?" @@ -8265,7 +8360,7 @@ msgstr "Połączono z procesem potomnym" #: editor/script_editor_debugger.cpp msgid "Copy Error" -msgstr "Błąd kopiowania" +msgstr "Kopiuj błąd" #: editor/script_editor_debugger.cpp msgid "Inspect Previous Instance" @@ -8689,10 +8784,6 @@ msgid "Build Project" msgstr "Zbuduj projekt" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Ostrzeżenia" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Pokaż logi" @@ -9089,6 +9180,90 @@ msgstr "Przyjmij %s" msgid "Set %s" msgstr "Ustaw %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Niepoprawna nazwa klasy" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Nazwa nie jest prawidÅ‚owym identyfikatorem:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Nazwa nie jest prawidÅ‚owym identyfikatorem:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Uruchom w przeglÄ…darce" @@ -9122,6 +9297,66 @@ msgstr "Nie można odczytać pliku obrazu splash:" msgid "Using default boot splash image." msgstr "DomyÅ›lny obrazek splash" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "NiewÅ‚aÅ›ciwa nazwa." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Niepoprawny rozmiar fonta." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Niepoprawna Å›cieżka bazowa" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Kolor tÅ‚a nieprawidÅ‚owy." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" +"NieprawidÅ‚owe wymiary obrazka ekranu powitalnego (powinno być 620x300)." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" +"NieprawidÅ‚owe wymiary obrazka ekranu powitalnego (powinno być 620x300)." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" +"NieprawidÅ‚owe wymiary obrazka ekranu powitalnego (powinno być 620x300)." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" +"NieprawidÅ‚owe wymiary obrazka ekranu powitalnego (powinno być 620x300)." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" +"NieprawidÅ‚owe wymiary obrazka ekranu powitalnego (powinno być 620x300)." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" +"NieprawidÅ‚owe wymiary obrazka ekranu powitalnego (powinno być 620x300)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" +"NieprawidÅ‚owe wymiary obrazka ekranu powitalnego (powinno być 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9231,6 +9466,13 @@ msgstr "" "WÄ™zeÅ‚ typu ParallaxLayer zadziaÅ‚a, jeÅ›li bÄ™dzie dzieckiem wÄ™zÅ‚a " "ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9424,6 +9666,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "Nic nie jest widoczne, bo siatki nie zostaÅ‚y przypisane do kolejki rysowania." @@ -9441,14 +9690,10 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow dziaÅ‚a tylko, gdy jest wÄ™zÅ‚em podrzÄ™dnym Path." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "OrientedPathFollow dziaÅ‚a tylko, gdy jest wÄ™zÅ‚em podrzÄ™dnym Path." - -#: scene/3d/path.cpp #, fuzzy msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" "OrientedPathFollow wymaga włączonych wektorów w górÄ™ w jego nadrzÄ™dnym Path." @@ -9556,6 +9801,10 @@ msgstr "KorzeÅ„ AnimationPlayer nie jest poprawnym wÄ™zÅ‚em." #: scene/animation/animation_tree_player.cpp msgid "This node has been deprecated. Use AnimationTree instead." +msgstr "Ten wÄ™zeÅ‚ jest przestarzaÅ‚y. Zamiast tego użyj AnimationTree." + +#: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." msgstr "" #: scene/gui/color_picker.cpp @@ -9563,6 +9812,10 @@ msgid "Raw Mode" msgstr "Trybie RAW" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Dodaj bieżący kolor jako domyÅ›lne" @@ -9659,6 +9912,21 @@ msgstr "Przypisanie do uniformu." msgid "Varyings can only be assigned in vertex function." msgstr "Varying może być przypisane tylko w funkcji wierzchoÅ‚ków." +#~ msgid "Warnings:" +#~ msgstr "Ostrzeżenia:" + +#~ msgid "Font Size:" +#~ msgstr "Rozmiar czcionki:" + +#~ msgid "Line:" +#~ msgstr "Linia:" + +#~ msgid "Col:" +#~ msgstr "Kolumna:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "OrientedPathFollow dziaÅ‚a tylko, gdy jest wÄ™zÅ‚em podrzÄ™dnym Path." + #~ msgid "Split point with itself." #~ msgstr "Podziel punkt ze sobÄ…." @@ -10821,25 +11089,6 @@ msgstr "Varying może być przypisane tylko w funkcji wierzchoÅ‚ków." #~ msgstr "Błąd przy eksporcie projektu!" #, fuzzy -#~ msgid "Invalid unique name." -#~ msgstr "NiewÅ‚aÅ›ciwa nazwa." - -#, fuzzy -#~ msgid "Invalid product GUID." -#~ msgstr "Niepoprawny rozmiar fonta." - -#, fuzzy -#~ msgid "Invalid publisher GUID." -#~ msgstr "Niepoprawna Å›cieżka bazowa" - -#~ msgid "Invalid background color." -#~ msgstr "Kolor tÅ‚a nieprawidÅ‚owy." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "" -#~ "NieprawidÅ‚owe wymiary obrazka ekranu powitalnego (powinno być 620x300)." - -#, fuzzy #~ msgid "RAW Mode" #~ msgstr "Tryb uruchamiania:" diff --git a/editor/translations/pr.po b/editor/translations/pr.po index b956a62e9a..f2dbc422df 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -552,20 +552,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -863,8 +855,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1285,9 +1277,30 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "" +"Ye got no export templates!\n" +"Download and install yer export templates." + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Yer fancy debug package be nowhere." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "Yer fancy release package be nowhere." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3243,6 +3256,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4196,6 +4222,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6209,7 +6245,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6285,7 +6321,12 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "Yer functions:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6297,8 +6338,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Yer unique name be evil." #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7062,6 +7104,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7075,6 +7149,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7762,6 +7849,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8568,10 +8667,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8989,6 +9084,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Yer unique name be evil." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Yer name's got no valid identifier:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Yer name's got no valid identifier:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9022,6 +9201,51 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Yer unique name be evil." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "Yer product GUID be evil." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "Yer publisher GUID be evil! Walk th' plank!" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Yer background color be evil!" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Yer Store Logo got th' wrong dimensions! She should be 50x50 I reckon." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "Yer square 44x44 logo image dimensions aint' 44x44!" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "Yer square 71x71 logo image dimensions aint' 71x71!" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "Yer square 150x150 logo image dimensions aint' 150x150!" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "Yer square 310x310 logo image dimensions aint' 310x310!" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "Yer wide 310x150 logo image dimensions aint' 310x150!" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Yer splash screen image dimensions aint' 620x300!" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9103,6 +9327,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9258,6 +9489,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9272,13 +9510,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9372,10 +9606,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9533,50 +9775,6 @@ msgstr "" #~ msgstr "Blimey! I can't create th' package signature." #~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "Ye got no export templates!\n" -#~ "Download and install yer export templates." - -#~ msgid "Custom debug package not found." -#~ msgstr "Yer fancy debug package be nowhere." - -#~ msgid "Custom release package not found." -#~ msgstr "Yer fancy release package be nowhere." - -#~ msgid "Invalid product GUID." -#~ msgstr "Yer product GUID be evil." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "Yer publisher GUID be evil! Walk th' plank!" - -#~ msgid "Invalid background color." -#~ msgstr "Yer background color be evil!" - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "" -#~ "Yer Store Logo got th' wrong dimensions! She should be 50x50 I reckon." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "Yer square 44x44 logo image dimensions aint' 44x44!" - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "Yer square 71x71 logo image dimensions aint' 71x71!" - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "Yer square 150x150 logo image dimensions aint' 150x150!" - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "Yer square 310x310 logo image dimensions aint' 310x310!" - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "Yer wide 310x150 logo image dimensions aint' 310x150!" - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "Yer splash screen image dimensions aint' 620x300!" - -#~ msgid "" #~ "Paths cannot start with '/', absolute paths must start with 'res://', " #~ "'user://', or 'local://'" #~ msgstr "" diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index 740c2ab7d8..92aef90e91 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -9,7 +9,7 @@ # Breno Caldeira <breno.caldeira@gmail.com>, 2018. # Francesco Perrotti-Garcia <fpg1503@gmail.com>, 2017. # George Marques <george@gmarqu.es>, 2016. -# Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>, 2017, 2018. +# Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>, 2017, 2018, 2019. # João Victor Lima <victordevtb@outlook.com>, 2018. # João Vitor de Oliveira Carlos <lopogax@gmail.com>, 2018. # Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016. @@ -20,7 +20,7 @@ # MalcomRF <malcomkbk@gmail.com>, 2017. # Marcus Correia <marknokalt@live.com>, 2017-2018. # Michael Alexsander Silva Dias <michaelalexsander@protonmail.com>, 2017-2018. -# Renato Rotenberg <renato.rotenberg@gmail.com>, 2017. +# Renato Rotenberg <renato.rotenberg@gmail.com>, 2017, 2019. # Rodolfo R Gomes <rodolforg@gmail.com>, 2017-2018, 2019. # Tiago Almeida <thyagoeap@gmail.com>, 2017. # Mauricio Luan Carneiro deSouza <newmailmlcs@gmail.com>, 2018. @@ -30,11 +30,11 @@ # Henrique Combochi <henrique.combochi@gmail.com>, 2018, 2019. # Gabriel Carvalho <billlmaster@gmail.com>, 2018, 2019. # miketangogamer <miketangogamer@gmail.com>, 2018. -# Eduardo Abreu <eduo.abreu@gmail.com>, 2018. +# Eduardo Abreu <eduo.abreu@gmail.com>, 2018, 2019. # Bruno Miranda Da Silva <brunofreezee@gmail.com>, 2018. # Marcos Roberto Rodrigues Marques <contato.mroberto@gmail.com>, 2018. # Dyefferson Azevedo <gamecanalbrasil@gmail.com>, 2018. -# LucasSouza6 <lucasosouza66@gmail.com>, 2018. +# LucasSouza6 <lucasosouza66@gmail.com>, 2018, 2019. # Pedro Pacheco <pedroxixipa@hotmail.com>, 2018, 2019. # Bruno Henrique <nimbusdroid@gmail.com>, 2018, 2019. # Luciano Scilletta <lucianoscilletta@gmail.com>, 2018. @@ -44,12 +44,19 @@ # Walter Bolitto <wrcarval@live.com>, 2018, 2019. # Vitor Chaves <vitorclcoelho@gmail.com>, 2019. # João Paulo Pulga <joaopaulo1339@outlook.com>, 2019. +# douglas neumeister <douglas.neumeister@gmail.com>, 2019. +# joel silva <joelgbsilva@gmail.com>, 2019. +# Heitor Novais Pereira <heitornovais394@outlook.com>, 2019. +# Joel Landgraf Filho <joel.landgraf@gmail.com>, 2019. +# Alan Valmorbida <alanvalmorbida@gmail.com>, 2019. +# João Vitor Ferreira Cavalcante <jvfecav@gmail.com>, 2019. +# Thiago Amendola <amendolathiago@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2019-01-13 15:07+0000\n" -"Last-Translator: João Paulo Pulga <joaopaulo1339@outlook.com>\n" +"PO-Revision-Date: 2019-02-10 12:01+0000\n" +"Last-Translator: Alan Valmorbida <alanvalmorbida@gmail.com>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" @@ -57,7 +64,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -390,7 +397,7 @@ msgstr "Agrupe as trilhas pelo nó ou exiba-as como lista simples." #: editor/animation_track_editor.cpp msgid "Snap (s): " -msgstr "Snap (Pixels): " +msgstr "Snap (s): " #: editor/animation_track_editor.cpp msgid "Animation step value." @@ -581,21 +588,13 @@ msgstr "Reduzir" msgid "Reset Zoom" msgstr "Redefinir Ampliação" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Avisos:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Tamanho da Fonte:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Linha:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Avisos" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Coluna:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -606,8 +605,8 @@ msgid "" "Target method not found! Specify a valid method or attach a script to target " "Node." msgstr "" -"Método destino não encontrado! Especifique um método válido ou anexe um " -"script ao nó destino." +"Método alvo não encontrado! Especifique um método válido ou anexe um script " +"ao Nó alvo." #: editor/connections_dialog.cpp msgid "Connect To Node:" @@ -897,8 +896,8 @@ msgstr "Excluir arquivos selecionados?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Excluir" @@ -1322,9 +1321,25 @@ msgid "Storing File:" msgstr "Armazenando Arquivo:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "Nenhum template para exportação foi encontrado no caminho esperado:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Empacotando" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "Modelo customizado de depuração não encontrado." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "Template customizado de release não encontrado." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Arquivo de modelo não encontrado:" @@ -2624,9 +2639,8 @@ msgid "Assign..." msgstr "Atribuir..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "Caminho Inválido" +msgstr "RID inválido" #: editor/editor_properties.cpp msgid "" @@ -3215,7 +3229,7 @@ msgstr "Grupos" #: editor/groups_editor.cpp msgid "Nodes not in Group" -msgstr "Nós fora de Grupo" +msgstr "Nós fora do Grupo" #: editor/groups_editor.cpp editor/scene_tree_dock.cpp msgid "Filter nodes" @@ -3338,6 +3352,22 @@ msgstr "Predefinição..." msgid "Reimport" msgstr "Reimportar" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "Salvar cenas, reimportar e reiniciar" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" +"Mudar o tipo de um arquivo importado necessita a reinicialização do editor." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"AVISO: Existem objetos que utilizam esse recurso, eles podem parar de " +"carregar apropriadamente." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Falha ao carregar recurso." @@ -3539,12 +3569,12 @@ msgstr "Definir posição de mescla dentro do espaço" #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp msgid "Select and move points, create points with RMB." -msgstr "Selecione e mova pontos, crie pontos com o Botão Direito do Mouse." +msgstr "Selecionar e mover pontos, criar pontos com o botão direito do mouse." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp msgid "Enable snap and show grid." -msgstr "Habilitar snap e mostrar a grade" +msgstr "Habilitar snap e mostrar a grade." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3865,7 +3895,7 @@ msgstr "Sincronizar" #: editor/plugins/animation_state_machine_editor.cpp msgid "At End" -msgstr "Ao final" +msgstr "No final" #: editor/plugins/animation_state_machine_editor.cpp msgid "Travel" @@ -3877,7 +3907,7 @@ msgstr "Nós inicial e final são necessários para uma sub-transição." #: editor/plugins/animation_state_machine_editor.cpp msgid "No playback resource set at path: %s." -msgstr "Não está no caminho de recursos." +msgstr "Sem recurso de playback definido no caminho: %s." #: editor/plugins/animation_state_machine_editor.cpp msgid "" @@ -3905,11 +3935,11 @@ msgstr "Remover nó ou trilha selecionada." msgid "Toggle autoplay this animation on start, restart or seek to zero." msgstr "" "Alternar a reprodução automática dessa animação ao iniciar, reiniciar ou " -"zerar." +"procurar ao zero." #: editor/plugins/animation_state_machine_editor.cpp msgid "Set the end animation. This is useful for sub-transitions." -msgstr "Define o fim da animação. Isto é útil para subtransições." +msgstr "Definir a animação final. Isso é útil para sub-transições." #: editor/plugins/animation_state_machine_editor.cpp msgid "Transition: " @@ -4279,34 +4309,41 @@ msgid "Create new horizontal and vertical guides" msgstr "Criar novos guias horizontais e verticais" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move pivot" msgstr "Mover Pivô" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem" -msgstr "Editar CanvaItem" +msgstr "Rotacionar CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move anchor" -msgstr "Ação de Mover" +msgstr "Mova a âncora" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Resize CanvasItem" -msgstr "Editar CanvaItem" +msgstr "Redimensionar o CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Scale CanvasItem" -msgstr "Editar CanvaItem" +msgstr "Tamanho CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem" -msgstr "Editar CanvaItem" +msgstr "Mover CanvaItem" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"Aviso: Filhos de um container tem sua posição e tamanho determinados apenas " +"pelo pai." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" @@ -4329,13 +4366,12 @@ msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." msgstr "" -"Aviso: os filhos de um contêiner têm a posição e o tamanho determinados " -"apenas pelos pais." +"Aviso: Filhos de um container tem sua posição e tamanho determinados apenas " +"pelo pai." #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp #: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp -#, fuzzy msgid "Zoom Reset" msgstr "Restaurar Ampliação" @@ -4391,18 +4427,16 @@ msgid "Pan Mode" msgstr "Modo Panorâmico" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Toggle snapping." -msgstr "Alternar Encaixamento" +msgstr "Alternar o snap." #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Snap" msgstr "Usar Snap" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snapping Options" -msgstr "Opções da Encaixe" +msgstr "Opções de agarramento" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to grid" @@ -4442,9 +4476,8 @@ msgid "Snap to node sides" msgstr "Encaixar nos lados do nó" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Snap to node center" -msgstr "Encaixar na âncora do nó" +msgstr "Encaixar no centro do nó" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap to other nodes" @@ -4473,9 +4506,8 @@ msgid "Restores the object's children's ability to be selected." msgstr "Restaura a habilidade dos filhos do objeto de serem selecionados." #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Skeleton Options" -msgstr "Esqueleto..." +msgstr "Opções de esqueleto" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Show Bones" @@ -4494,9 +4526,8 @@ msgid "Make Custom Bone(s) from Node(s)" msgstr "Criar esqueleto(s) customizado do(s) nó(s)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Clear Custom Bones" -msgstr "Limpar Ossos" +msgstr "Limpar os ossos personalizados" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -4619,9 +4650,8 @@ msgid "Set Handle" msgstr "Definir Manipulador" #: editor/plugins/cpu_particles_editor_plugin.cpp -#, fuzzy msgid "CPUParticles" -msgstr "PartÃculas" +msgstr "Particulas CPU" #: editor/plugins/cpu_particles_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -4955,7 +4985,6 @@ msgid "Create Navigation Polygon" msgstr "Criar PolÃgono de Navegação" #: editor/plugins/particles_2d_editor_plugin.cpp -#, fuzzy msgid "Generating Visibility Rect" msgstr "Gerar Retângulo de Visibilidade" @@ -4986,9 +5015,8 @@ msgstr "Limpar Máscara de Emissão" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp -#, fuzzy msgid "Convert to CPUParticles" -msgstr "Converter para MaÃusculo" +msgstr "Converter para Particulas CPU" #: editor/plugins/particles_2d_editor_plugin.cpp #: editor/plugins/particles_editor_plugin.cpp @@ -5090,9 +5118,8 @@ msgid "Add Point to Curve" msgstr "Adicionar Ponto à Curva" #: editor/plugins/path_2d_editor_plugin.cpp -#, fuzzy msgid "Split Curve" -msgstr "Fechar Curva" +msgstr "Dvidir Curva" #: editor/plugins/path_2d_editor_plugin.cpp msgid "Move Point in Curve" @@ -5122,9 +5149,8 @@ msgid "Click: Add Point" msgstr "Clique: Adicionar Ponto" #: editor/plugins/path_2d_editor_plugin.cpp -#, fuzzy msgid "Left Click: Split Segment (in curve)" -msgstr "Botão esquerdo: Dividir Segmentos (na curva)" +msgstr "Botão esquerdo do mouse: Dividir Segmentos (na curva)" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp @@ -5163,9 +5189,8 @@ msgstr "Espelhar ângulos de controle" #: editor/plugins/path_2d_editor_plugin.cpp #: editor/plugins/path_editor_plugin.cpp -#, fuzzy msgid "Mirror Handle Lengths" -msgstr "Espelhar comprimindo de controle" +msgstr "Espelhar Controle de alça" #: editor/plugins/path_editor_plugin.cpp msgid "Curve Point #" @@ -5205,25 +5230,23 @@ msgstr "Dividir Segmentos (na curva)" #: editor/plugins/physical_bone_plugin.cpp msgid "Move joint" -msgstr "Mover Ponto" +msgstr "Mover junta" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "" "The skeleton property of the Polygon2D does not point to a Skeleton2D node" -msgstr "A propriedade esqueleto do Polygon2D não aponta para um nó Skeleton2D." +msgstr "A propriedade esqueleto do Polygon2D não aponta para um nó Skeleton2D" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Sync Bones" -msgstr "Mostrar Ossos" +msgstr "Sincronizar Ossos" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "No texture in this polygon.\n" "Set a texture to be able to edit UV." msgstr "" -"Sem textura nesse nó.\n" +"Sem textura nesse polÃgono.\n" "Defina uma textura para poder editar essa região." #: editor/plugins/polygon_2d_editor_plugin.cpp @@ -5231,33 +5254,28 @@ msgid "Create UV Map" msgstr "Criar Mapa UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Polygon & UV" -msgstr "Criar PolÃgono" +msgstr "Criar PolÃgono & UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Criar novo guia horizontal" +msgstr "Criar Vertex Interno" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "Remover Ponto de Controle de Entrada" +msgstr "Remover Vertex Interno" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "PolÃgono inválido (precisa de 3 vértices diferentes)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Editar PolÃgono" +msgstr "Adicionar polÃgono personalizado" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Remover PolÃgono e Ponto" +msgstr "Remover polÃgono personalizado" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5269,12 +5287,11 @@ msgstr "Transformar polÃgono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint Bone Weights" -msgstr "" +msgstr "Pintar Pesos Ósseo" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Open Polygon 2D UV editor." -msgstr "Editor UV de PolÃgonos 2D" +msgstr "Abrir editor de PolÃgonos UV 2D." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon 2D UV Editor" @@ -5285,19 +5302,16 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Ponto" +msgstr "Pontos" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "PolÃgono->UV" +msgstr "PolÃgonos" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Bones" -msgstr "Fazer Ossos" +msgstr "Ossos" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Points" @@ -5330,20 +5344,24 @@ msgstr "Escalonar PolÃgono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." msgstr "" +"Crie um polÃgono personalizado. Permite renderização de polÃgono " +"personalizado." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"Remova um polÃgono personalizado. Se nenhum permanecer, a renderização de " +"polÃgono personalizada será desativada." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." -msgstr "" +msgstr "Pintar pesos com intensidade especificada." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Unpaint weights with specified intensity." -msgstr "" +msgstr "Não pintar pesos com intensidade especificada." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Radius:" @@ -5383,29 +5401,24 @@ msgid "Configure Grid:" msgstr "Configurar a grade:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Offset X:" -msgstr "Deslocamento da grade:" +msgstr "Deslocamento da Grade X:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Offset Y:" -msgstr "Deslocamento da grade:" +msgstr "Deslocamento da Grade Y:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Step X:" -msgstr "Passo de grade:" +msgstr "Passo X da Grade:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Grid Step Y:" -msgstr "Passo de grade:" +msgstr "Passo Y da Grade:" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Sync Bones to Polygon" -msgstr "Escalonar PolÃgono" +msgstr "Sincronizar Ossos ao PolÃgono" #: editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" @@ -5459,12 +5472,11 @@ msgstr "ResourcePreloader" #: editor/plugins/root_motion_editor_plugin.cpp msgid "AnimationTree has no path set to an AnimationPlayer" -msgstr "" +msgstr "AnimationTree não tem caminho definido para um AnimationPlayer" #: editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Path to AnimationPlayer is invalid" -msgstr "Ãrvore de Animação é inválida." +msgstr "O caminho para o AnimationPlayer é inválido" #: editor/plugins/script_editor_plugin.cpp msgid "Clear Recent Files" @@ -5507,9 +5519,8 @@ msgid "Error Importing" msgstr "Erro ao importar" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "New TextFile..." -msgstr "Nova Pasta..." +msgstr "Novo arquivo de texto ..." #: editor/plugins/script_editor_plugin.cpp msgid "Open File" @@ -5659,9 +5670,8 @@ msgid "Keep Debugger Open" msgstr "Manter Depurador Aberto" #: editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Debug with External Editor" -msgstr "Depurar com um editor externo" +msgstr "Depurar com o Editor Externo" #: editor/plugins/script_editor_plugin.cpp msgid "Open Godot online documentation" @@ -5728,9 +5738,8 @@ msgid "Only resources from filesystem can be dropped." msgstr "Apenas recursos do sistema de arquivos podem ser soltos." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Lookup Symbol" -msgstr "Completar SÃmbolo" +msgstr "SÃmbolo de pesquisa" #: editor/plugins/script_text_editor.cpp msgid "Pick Color" @@ -5807,14 +5816,12 @@ msgid "Trim Trailing Whitespace" msgstr "Apagar Espaços em Branco" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Spaces" -msgstr "Converter Indentação Para Espaços" +msgstr "Converter recuo para espaços" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Convert Indent to Tabs" -msgstr "Converter Indentação Para Tabs" +msgstr "Converter recuo em tabulações" #: editor/plugins/script_text_editor.cpp msgid "Auto Indent" @@ -5830,14 +5837,12 @@ msgid "Remove All Breakpoints" msgstr "Remover Todos os Pontos de Interrupção" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Next Breakpoint" -msgstr "Ir ao Próximo Ponto de Interrupção" +msgstr "Vá para o próximo ponto de interrupção" #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Previous Breakpoint" -msgstr "Ir ao Ponto de Interrupção Anterior" +msgstr "Ir para ponto de interrupção anterior" #: editor/plugins/script_text_editor.cpp msgid "Find Previous" @@ -5848,7 +5853,6 @@ msgid "Find in Files..." msgstr "Procurar nos Arquivos..." #: editor/plugins/script_text_editor.cpp -#, fuzzy msgid "Go to Function..." msgstr "Ir para Função..." @@ -5865,9 +5869,8 @@ msgid "Shader" msgstr "Shader" #: editor/plugins/skeleton_2d_editor_plugin.cpp -#, fuzzy msgid "This skeleton has no bones, create some children Bone2D nodes." -msgstr "Esse esqueleto não tem ossos, crie alguns nós Bone2D filhos." +msgstr "Este esqueleto não tem ossos, crie alguns nós filhos Bone2D." #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Skeleton2D" @@ -5875,30 +5878,27 @@ msgstr "Esqueleto2D" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Make Rest Pose (From Bones)" -msgstr "" +msgstr "Faça Resto Pose (De Ossos)" #: editor/plugins/skeleton_2d_editor_plugin.cpp msgid "Set Bones to Rest Pose" -msgstr "" +msgstr "Definir os ossos para descansar Pose" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical bones" -msgstr "Criar Malha de Navegação" +msgstr "Crie ossos fÃsicos" #: editor/plugins/skeleton_editor_plugin.cpp msgid "Skeleton" msgstr "Esqueleto" #: editor/plugins/skeleton_editor_plugin.cpp -#, fuzzy msgid "Create physical skeleton" -msgstr "Criar solução C#" +msgstr "Criar esqueleto fÃsico" #: editor/plugins/skeleton_ik_editor_plugin.cpp -#, fuzzy msgid "Play IK" -msgstr "Tocar" +msgstr "Jogar IK" #: editor/plugins/spatial_editor_plugin.cpp msgid "Orthogonal" @@ -5954,7 +5954,7 @@ msgstr "Tom" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "" +msgstr "Guinada" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -6121,9 +6121,8 @@ msgid "Freelook Speed Modifier" msgstr "Modificador de velocidade da Visão Livre" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "View Rotation Locked" -msgstr "Visualizar Informações" +msgstr "Ver Rotação Bloqueada" #: editor/plugins/spatial_editor_plugin.cpp msgid "XForm Dialog" @@ -6237,7 +6236,7 @@ msgstr "Transformação" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap object to floor" -msgstr "" +msgstr "Encaixar o objeto no chão" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." @@ -6268,9 +6267,8 @@ msgid "4 Viewports" msgstr "4 Viewports" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Gizmos" -msgstr "Visualizar Gizmos" +msgstr "Gizmos" #: editor/plugins/spatial_editor_plugin.cpp msgid "View Origin" @@ -6346,50 +6344,46 @@ msgid "Post" msgstr "Pós" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" -msgstr "" +#, fuzzy +msgid "Nameless gizmo" +msgstr "Gaveta sem nome" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Sprite is empty!" -msgstr "Caminho de salvamento vazio!" +msgstr "Sprite está vazio!" #: editor/plugins/sprite_editor_plugin.cpp msgid "Can't convert a sprite using animation frames to mesh." msgstr "" +"Não é possÃvel converter um sprite usando quadros de animação para malha." #: editor/plugins/sprite_editor_plugin.cpp msgid "Invalid geometry, can't replace by mesh." -msgstr "" +msgstr "Geometria inválida, não é possÃvel substituir por malha." #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Sprite" -msgstr "SpriteFrames" +msgstr "Sprite" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Convert to 2D Mesh" -msgstr "Converter Para %s" +msgstr "Converter para malha 2D" #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Create 2D Mesh" -msgstr "Criar Malha de Contorno" +msgstr "Crie uma malha 2D" #: editor/plugins/sprite_editor_plugin.cpp msgid "Simplification: " msgstr "Simplificação: " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Grow (Pixels): " -msgstr "Snap (Pixels):" +msgstr "Produzir (Pixels): " #: editor/plugins/sprite_editor_plugin.cpp -#, fuzzy msgid "Update Preview" -msgstr "Visualização do Atlas" +msgstr "Atualizar visualização" #: editor/plugins/sprite_editor_plugin.cpp msgid "Settings:" @@ -6428,10 +6422,16 @@ msgid "(empty)" msgstr "(vazio)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animações" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animação" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Velocidade (FPS):" @@ -6440,7 +6440,8 @@ msgid "Loop" msgstr "Repetir" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Quadros da Animação" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6502,10 +6503,9 @@ msgstr "Passo:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "Sep.:" -msgstr "" +msgstr "Set .:" #: editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "TextureRegion" msgstr "Região da Textura" @@ -6638,14 +6638,12 @@ msgid "Erase Selection" msgstr "Apagar Seleção" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Fix Invalid Tiles" -msgstr "Nome Inválido." +msgstr "Corrigir blocos inválidos" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Cut Selection" -msgstr "Centralizar Seleção" +msgstr "Seleção de corte" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Paint TileMap" @@ -6668,9 +6666,8 @@ msgid "Erase TileMap" msgstr "Apagar TileMap" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Find Tile" -msgstr "Localizar tile" +msgstr "Encontrar Tile" #: editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" @@ -6713,19 +6710,16 @@ msgid "Flip vertically" msgstr "Girar verticalmente" #: editor/plugins/tile_map_editor_plugin.cpp -#, fuzzy msgid "Clear transform" -msgstr "Transformação" +msgstr "Limpar Transformação" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Add Texture(s) to TileSet." -msgstr "Adicionar Nó(s) a Partir da Ãrvore" +msgstr "Adicionar textura(s) ao TileSet." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected Texture from TileSet." -msgstr "Remover a entrada atual" +msgstr "Remova a textura selecionada do TileSet." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" @@ -6737,17 +6731,15 @@ msgstr "Fundir a partir de Cena" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Copy bitmask." -msgstr "" +msgstr "Copie o bitmask." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste bitmask." -msgstr "Colar Animação" +msgstr "Cole o bitmask." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Erase bitmask." -msgstr "RMB: Apagar Pontos" +msgstr "Apagar o bitmask." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create a new polygon." @@ -6755,20 +6747,19 @@ msgstr "Criar um novo polÃgono." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Keep polygon inside region Rect." -msgstr "" +msgstr "Mantenha o polÃgono dentro da região Rect." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Enable snap and show grid (configurable via the Inspector)." -msgstr "" +msgstr "Ative o snap e mostre a grade (configurável através do Inspetor)." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Display Tile Names (Hold Alt Key)" -msgstr "" +msgstr "Exibir nomes de mosaico (segure a tecla Alt)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "Remover Texture Selecionada e TODAS PEÇAS que a usam?" +msgstr "Remover Texture Selecionada e TODAS PEÇAS que a usam." #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." @@ -6776,16 +6767,15 @@ msgstr "Você não selecionou uma textura para remover." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Create from scene? This will overwrite all current tiles." -msgstr "" +msgstr "Criar a partir de cena? Isso substituirá todos os blocos atuais." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" msgstr "Fundir a partir de cena?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Texture" -msgstr "Remover Modelo" +msgstr "Remover textura" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." @@ -6796,136 +6786,126 @@ msgid "" "Drag handles to edit Rect.\n" "Click on another Tile to edit it." msgstr "" +"Arraste alças para editar o Rect.\n" +"Clique em outro Mosaico para editá-lo." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Delete selected Rect." -msgstr "Excluir arquivos selecionados?" +msgstr "Excluir o Rect selecionado." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select current edited sub-tile.\n" "Click on another Tile to edit it." -msgstr "Selecione o sub-tile editado atual." +msgstr "" +"Selecione o sub-bloco editado atual.\n" +"Clique em outro Mosaico para editá-lo." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Delete polygon." msgstr "Excluir polÃgono." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "LMB: Set bit on.\n" "RMB: Set bit off.\n" "Click on another Tile to edit it." msgstr "" "LMB: ligar bit.\n" -"RMB: desligar bit." +"RMB: desligar bit.\n" +"Clique em outro Mosaico para editá-lo." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select sub-tile to use as icon, this will be also used on invalid autotile " "bindings.\n" "Click on another Tile to edit it." msgstr "" -"Selecione o sub-tile para usar como Ãcone, isso também vai ser usado em " -"vinculamentos de autotiles inválidos." +"Selecione o sub-bloco para usar como Ãcone, isso também será usado em " +"ligações inválidas do autotile.\n" +"Clique em outro Mosaico para editá-lo." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select sub-tile to change its priority.\n" "Click on another Tile to edit it." -msgstr "Selecione o sub-tile para alterar sua prioridade." +msgstr "" +"Selecione o sub-bloco para alterar sua prioridade.\n" +"Clique em outro Mosaico para editá-lo." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "" "Select sub-tile to change its z index.\n" "Click on another Tile to edit it." -msgstr "Selecione o sub-tile para alterar sua prioridade." +msgstr "" +"Selecione o sub-bloco para alterar seu Ãndice z.\n" +"Clique em outro Mosaico para editá-lo." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Set Tile Region" -msgstr "Definir Retângulo de Região" +msgstr "Definir a região da Telha" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Tile" -msgstr "Criar Pasta" +msgstr "Criar Telha" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "" +msgstr "Definir Ãcone de telha" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Bitmask" -msgstr "Editar Filtros" +msgstr "Editar o Bitmask da telha" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Collision Polygon" -msgstr "Editar polÃgono existente:" +msgstr "Editar polÃgono de colisão" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Occlusion Polygon" -msgstr "Editar PolÃgono" +msgstr "Editar polÃgono de oclusão" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Navigation Polygon" -msgstr "Criar PolÃgono de Navegação" +msgstr "Editar polÃgono de navegação" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste Tile Bitmask" -msgstr "Colar Animação" +msgstr "Colar Máscara Bitmask" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "" +msgstr "Limpar o Bitmask da telha" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Tile" -msgstr "Remover Modelo" +msgstr "Remover Telha" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Collision Polygon" -msgstr "Remover PolÃgono e Ponto" +msgstr "Remover o polÃgono de colisão" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Occlusion Polygon" -msgstr "Criar PolÃgono de Oclusão" +msgstr "Remover PolÃgono de Oclusão" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Navigation Polygon" -msgstr "Criar PolÃgono de Navegação" +msgstr "Remover PolÃgono de Navegação" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Priority" -msgstr "Editar Filtros" +msgstr "Editar prioridade da telha" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" -msgstr "" +msgstr "Editar Ãndice de telha Z" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Collision Polygon" -msgstr "Criar PolÃgono de Navegação" +msgstr "Criar polÃgono de colisão" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Occlusion Polygon" msgstr "Criar PolÃgono de Oclusão" @@ -6934,28 +6914,24 @@ msgid "This property can't be changed." msgstr "Esta propriedade não pode ser alterada." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "TileSet" -msgstr "Tile Set" +msgstr "Conjunto de Telha" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Vertex" -msgstr "Vértices" +msgstr "Vértice" #: editor/plugins/visual_shader_editor_plugin.cpp msgid "Fragment" msgstr "Fragmento" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "Light" -msgstr "Direita" +msgstr "Luz" #: editor/plugins/visual_shader_editor_plugin.cpp -#, fuzzy msgid "VisualShader" -msgstr "Shader" +msgstr "VisualShader" #: editor/project_export.cpp msgid "Runnable" @@ -6977,7 +6953,7 @@ msgstr "" #: editor/project_export.cpp msgid "Release" -msgstr "" +msgstr "Lançamento" #: editor/project_export.cpp msgid "Exporting All" @@ -6992,9 +6968,8 @@ msgid "Add..." msgstr "Adicionar..." #: editor/project_export.cpp -#, fuzzy msgid "Export Path" -msgstr "Preset de Exportação:" +msgstr "Caminho de Exportação" #: editor/project_export.cpp msgid "Resources" @@ -7055,9 +7030,8 @@ msgid "Feature List:" msgstr "Lista de Funcionalidades:" #: editor/project_export.cpp -#, fuzzy msgid "Script" -msgstr "Novo Script" +msgstr "Roteiro" #: editor/project_export.cpp msgid "Script Export Mode:" @@ -7076,7 +7050,6 @@ msgid "Encrypted (Provide Key Below)" msgstr "Criptografado (forneça chave abaixo)" #: editor/project_export.cpp -#, fuzzy msgid "Invalid Encryption Key (must be 64 characters long)" msgstr "Chave de Criptografia Inválida (é necessário 64 caracteres)" @@ -7222,6 +7195,48 @@ msgid "Browse" msgstr "Navegar" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "Renderizador:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"Maior qualidade visual\n" +"Todas as funções disponÃveis\n" +"IncompatÃvel com hardware antigo\n" +"Não recomendado para jogos web" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 2.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"Menor qualidade visual\n" +"Algumas funções não disponÃveis\n" +"Funciona na maioria dos hardwares\n" +"Recomendado para jogos web" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" +"Renderizador pode ser alterado posteriormente, porém, cenas poderão " +"necessitar de ajustes." + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projeto Sem Nome" @@ -7236,6 +7251,27 @@ msgstr "Tem certeza de que quer abrir mais de um projeto?" #: editor/project_manager.cpp #, fuzzy msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"O seguinte arquivo de configurações do projeto foi gerado por uma versão " +"mais antiga do mecanismo e precisa ser convertido para esta versão:\n" +"\n" +"%s\n" +"\n" +"Você deseja realizar a conversão?\n" +"Aviso: você não poderá mais abrir o projeto com versões anteriores do " +"mecanismo." + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7245,22 +7281,22 @@ msgid "" "Warning: You will not be able to open the project with previous versions of " "the engine anymore." msgstr "" -"As configurações do projeto foram geradas por uma versão antiga, e precisam " -"ser convertidas para esta versão:\n" +"O seguinte arquivo de configurações do projeto foi gerado por uma versão " +"mais antiga do mecanismo e precisa ser convertido para esta versão:\n" "\n" "%s\n" "\n" "Você deseja realizar a conversão?\n" -"Aviso: Não será mais possÃvel você abrir o projeto com versões mais antigas." +"Aviso: você não poderá mais abrir o projeto com versões anteriores do " +"mecanismo." #: editor/project_manager.cpp -#, fuzzy msgid "" "The project settings were created by a newer engine version, whose settings " "are not compatible with this version." msgstr "" -"As configurações do projeto foram geradas por uma versão do Godot mais nova, " -"cuja configurações não são compatÃveis com esta versão." +"As configurações do projeto foram criadas por uma versão mais recente do " +"mecanismo, cujas configurações não são compatÃveis com esta versão." #: editor/project_manager.cpp msgid "" @@ -7366,13 +7402,12 @@ msgid "Mouse Button" msgstr "Botão do Mous" #: editor/project_settings_editor.cpp -#, fuzzy msgid "" "Invalid action name. it cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'" msgstr "" -"Nome de ação inválido. Ele não pode estar vazio ou conter '/', ':', '=', " -"'\\' ou '\"'." +"Nome da ação inválido. Não pode estar vazio nem conter '/', ':', '=', '\\' " +"ou '\"'" #: editor/project_settings_editor.cpp msgid "Action '%s' already exists!" @@ -7383,18 +7418,16 @@ msgid "Rename Input Action Event" msgstr "Renomear Evento de Ação de Entrada" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Change Action deadzone" -msgstr "Alterar Nome da Animação:" +msgstr "Alterar zona morta de ação" #: editor/project_settings_editor.cpp msgid "Add Input Action Event" msgstr "Adicionar Evento de Ação de Entrada" #: editor/project_settings_editor.cpp -#, fuzzy msgid "All Devices" -msgstr "Dispositivo" +msgstr "Todos os dispositivos" #: editor/project_settings_editor.cpp msgid "Device" @@ -7441,24 +7474,20 @@ msgid "Wheel Down Button" msgstr "Roda para Baixo" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Wheel Left Button" -msgstr "Roda para Cima" +msgstr "Botão Esquerdo da Roda" #: editor/project_settings_editor.cpp -#, fuzzy msgid "Wheel Right Button" -msgstr "Botão Direito" +msgstr "Botão direito da roda" #: editor/project_settings_editor.cpp -#, fuzzy msgid "X Button 1" -msgstr "Botão 6" +msgstr "Botão X 1" #: editor/project_settings_editor.cpp -#, fuzzy msgid "X Button 2" -msgstr "Botão 6" +msgstr "Botão X 2" #: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" @@ -7622,7 +7651,7 @@ msgstr "Ação" #: editor/project_settings_editor.cpp msgid "Deadzone" -msgstr "" +msgstr "Zona morta" #: editor/project_settings_editor.cpp msgid "Device:" @@ -7753,16 +7782,14 @@ msgid "Can't load back converted image using PVRTC tool:" msgstr "Não se pôde carregar de volta imagem convertida por PVRTC:" #: editor/rename_dialog.cpp editor/scene_tree_dock.cpp -#, fuzzy msgid "Batch Rename" -msgstr "Renomear" +msgstr "Renomear em lote" #: editor/rename_dialog.cpp msgid "Prefix" msgstr "Prefixo" #: editor/rename_dialog.cpp -#, fuzzy msgid "Suffix" msgstr "Sufixo" @@ -7780,7 +7807,7 @@ msgstr "Nome do nó" #: editor/rename_dialog.cpp msgid "Node's parent name, if available" -msgstr "" +msgstr "Nome pai do nó, se disponÃvel" #: editor/rename_dialog.cpp msgid "Node type" @@ -7799,14 +7826,16 @@ msgid "" "Sequential integer counter.\n" "Compare counter options." msgstr "" +"Contador inteiro sequencial.\n" +"Compare as opções do contador." #: editor/rename_dialog.cpp msgid "Per Level counter" -msgstr "" +msgstr "Contador de nÃvel" #: editor/rename_dialog.cpp msgid "If set the counter restarts for each group of child nodes" -msgstr "" +msgstr "Se definido, o contador será reiniciado para cada grupo de nós filhos" #: editor/rename_dialog.cpp msgid "Initial value for the counter" @@ -7817,27 +7846,24 @@ msgid "Step" msgstr "Passo" #: editor/rename_dialog.cpp -#, fuzzy msgid "Amount by which counter is incremented for each node" -msgstr "Quantidade pela qual contador é incrementado para cada nó" +msgstr "Quantidade pela qual o contador é incrementado para cada nó" #: editor/rename_dialog.cpp msgid "Padding" msgstr "Preenchimento" #: editor/rename_dialog.cpp -#, fuzzy msgid "" "Minimum number of digits for the counter.\n" "Missing digits are padded with leading zeros." msgstr "" "Número mÃnimo de dÃgitos para o contador.\n" -"DÃgitos perdidos são preenchidos com zeros." +"Os dÃgitos ausentes são preenchidos com zeros à esquerda." #: editor/rename_dialog.cpp -#, fuzzy msgid "Regular Expressions" -msgstr "Alterar Expressão" +msgstr "Expressões regulares" #: editor/rename_dialog.cpp msgid "Post-Process" @@ -7849,30 +7875,27 @@ msgstr "Manter" #: editor/rename_dialog.cpp msgid "CamelCase to under_scored" -msgstr "" +msgstr "CamelCase para under_scored" #: editor/rename_dialog.cpp msgid "under_scored to CamelCase" -msgstr "" +msgstr "under_scored para CamelCase" #: editor/rename_dialog.cpp msgid "Case" -msgstr "" +msgstr "Caso" #: editor/rename_dialog.cpp -#, fuzzy msgid "To Lowercase" -msgstr "Minúscula" +msgstr "Para minúsculas" #: editor/rename_dialog.cpp -#, fuzzy msgid "To Uppercase" -msgstr "Maiúscula" +msgstr "Para Maiúscula" #: editor/rename_dialog.cpp -#, fuzzy msgid "Reset" -msgstr "Redefinir Ampliação" +msgstr "Recompor" #: editor/rename_dialog.cpp msgid "Error" @@ -7959,6 +7982,21 @@ msgid "Duplicate Node(s)" msgstr "Duplicar Nó(s)" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" +"Não é possÃvel re-hierarquizar nós em cenas herdadas, a ordem dos nós não " +"pode ser alterada." + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "Node necessita pertencer à cena editada para se tornar raiz." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "Cenas instanciadas não podem se tornar raiz" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Excluir Nó(s)?" @@ -7979,6 +8017,8 @@ msgid "" "Disabling \"editable_instance\" will cause all properties of the node to be " "reverted to their default." msgstr "" +"Desativar \"editable_instance\" fará com que todas as propriedades do nó " +"sejam revertidas para o padrão." #: editor/scene_tree_dock.cpp msgid "Editable Children" @@ -7997,24 +8037,20 @@ msgid "Create Root Node:" msgstr "Criar nó raiz:" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "2D Scene" -msgstr "Cena" +msgstr "Cena 2D" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "3D Scene" -msgstr "Cena" +msgstr "Cena 3D" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "User Interface" -msgstr "Limpar Herança" +msgstr "Interface de Usuário" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Custom Node" -msgstr "Recortar Nodes" +msgstr "Nó personalizado" #: editor/scene_tree_dock.cpp msgid "Can't operate on nodes from a foreign scene!" @@ -8057,9 +8093,8 @@ msgid "Clear Inheritance" msgstr "Limpar Herança" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Open documentation" -msgstr "Abrir a documentação online da Godot" +msgstr "Abrir a documentação" #: editor/scene_tree_dock.cpp msgid "Delete Node(s)" @@ -8074,14 +8109,12 @@ msgid "Change Type" msgstr "Mudar Tipo" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Extend Script" -msgstr "Abrir script" +msgstr "Estender Script" #: editor/scene_tree_dock.cpp -#, fuzzy msgid "Make Scene Root" -msgstr "Nova Raiz de Cena" +msgstr "Fazer Raiz de Cena" #: editor/scene_tree_dock.cpp msgid "Merge From Scene" @@ -8132,7 +8165,6 @@ msgid "Clear Inheritance? (No Undo!)" msgstr "Limpar Herança? (IrreversÃvel!)" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "Toggle Visible" msgstr "Alternar Visibilidade" @@ -8141,7 +8173,6 @@ msgid "Node configuration warning:" msgstr "Aviso de configuração de nó:" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node has connection(s) and group(s).\n" "Click to show signals dock." @@ -8166,27 +8197,24 @@ msgstr "" "Clique para mostrar o painel de grupos." #: editor/scene_tree_editor.cpp editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script" msgstr "Abrir script" #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Node is locked.\n" "Click to unlock it." msgstr "" "O nó está travado.\n" -"Clique para destravar" +"Clique para destravar." #: editor/scene_tree_editor.cpp -#, fuzzy msgid "" "Children are not selectable.\n" "Click to make selectable." msgstr "" "Os filhos não são selecionáveis.\n" -"Clique para fazê-los selecionáveis" +"Clique para fazê-los selecionáveis." #: editor/scene_tree_editor.cpp msgid "Toggle Visibility" @@ -8197,6 +8225,8 @@ msgid "" "AnimationPlayer is pinned.\n" "Click to unpin." msgstr "" +"AnimationPlayer está marcado.\n" +"Clique para desmarcar." #: editor/scene_tree_editor.cpp msgid "Invalid node name, the following characters are not allowed:" @@ -8235,18 +8265,16 @@ msgid "N/A" msgstr "N/D" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script/Choose Location" -msgstr "Abrir Editor de Scripts" +msgstr "Abrir Script/Escolher Localização" #: editor/script_create_dialog.cpp msgid "Path is empty" msgstr "O caminho está vazio" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Filename is empty" -msgstr "Caminho de salvamento vazio!" +msgstr "O nome do arquivo está vazio" #: editor/script_create_dialog.cpp msgid "Path is not local" @@ -8337,9 +8365,8 @@ msgid "Bytes:" msgstr "Bytes:" #: editor/script_editor_debugger.cpp -#, fuzzy msgid "Stack Trace" -msgstr "Pilha de Quadros" +msgstr "Rastreamento de pilha" #: editor/script_editor_debugger.cpp msgid "Pick one or more items from the list to display the graph." @@ -8458,9 +8485,8 @@ msgid "Change Camera Size" msgstr "Alterar Tamanho da Câmera" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Notifier AABB" -msgstr "Alterar a Dimensão do Notificador" +msgstr "Alterar o AABB do Notificador" #: editor/spatial_editor_gizmos.cpp msgid "Change Particles AABB" @@ -8487,38 +8513,32 @@ msgid "Change Capsule Shape Height" msgstr "Alterar a Altura da Forma da Cápsula" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Cylinder Shape Radius" -msgstr "Alterar o Raio da Forma da Cápsula" +msgstr "Alterar o Raio da Forma do Cilindro" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Cylinder Shape Height" -msgstr "Alterar a Altura da Forma da Cápsula" +msgstr "Alterar a Altura da Forma do Cilindro" #: editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" msgstr "Alterar o Comprimento da Forma do Raio" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Cylinder Radius" -msgstr "Alterar Raio da Luz" +msgstr "Alterar Raio do Cilindro" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Cylinder Height" -msgstr "Alterar a Altura da Forma da Cápsula" +msgstr "Alterar a Altura do Cilindro" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Torus Inner Radius" -msgstr "Alterar Raio da Forma da Esfera" +msgstr "Alterar Raio Interno do Toro" #: modules/csg/csg_gizmos.cpp -#, fuzzy msgid "Change Torus Outer Radius" -msgstr "Alterar Raio da Luz" +msgstr "Alterar Raio Externo do Toro" #: modules/gdnative/gdnative_library_editor_plugin.cpp msgid "Select the dynamic library for this entry" @@ -8573,9 +8593,8 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -#, fuzzy msgid "Step argument is zero!" -msgstr "o argumento step é zero!" +msgstr "O argumento step é zero!" #: modules/gdscript/gdscript_functions.cpp msgid "Not a script with an instance" @@ -8640,9 +8659,8 @@ msgid "GridMap Delete Selection" msgstr "Excluir Seleção do Gridap" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Fill Selection" -msgstr "Excluir Seleção do Gridap" +msgstr "Seleção de preenchimento GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Duplicate Selection" @@ -8725,9 +8743,8 @@ msgid "Clear Selection" msgstr "Limpar Seleção" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "Fill Selection" -msgstr "Toda a seleção" +msgstr "Seleção de preenchimento" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Settings" @@ -8786,10 +8803,6 @@ msgid "Build Project" msgstr "Compilar Projeto" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Avisos" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Ver registro" @@ -8799,7 +8812,7 @@ msgstr "Fim da pilha de rastreamento de exceção interna" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "" +msgstr "Bake NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -9026,14 +9039,12 @@ msgid "Connect Nodes" msgstr "Conectar Nodes" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Node Data" -msgstr "Conectar Nodes" +msgstr "Conectar dados do nó" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Node Sequence" -msgstr "Conectar Nodes" +msgstr "Conectar Nó Sequência" #: modules/visual_script/visual_script_editor.cpp msgid "Script already has function '%s'" @@ -9120,9 +9131,8 @@ msgid "Paste Nodes" msgstr "Colar Nodes" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Edit Member" -msgstr "Membros" +msgstr "Editar Membro" #: modules/visual_script/visual_script_flow_control.cpp msgid "Input type not iterable: " @@ -9146,7 +9156,7 @@ msgstr "Objeto base não é um nó!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Path does not lead Node!" -msgstr "O caminho não leva a um nó!" +msgstr "Caminho não leva a um Nó!" #: modules/visual_script/visual_script_func_nodes.cpp msgid "Invalid index property name '%s' in node %s." @@ -9183,18 +9193,108 @@ msgstr "" "string (erro)." #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Search VisualScript" -msgstr "Remover Nó VisualScript" +msgstr "Buscar VisualScript" #: modules/visual_script/visual_script_property_selector.cpp msgid "Get %s" -msgstr "" +msgstr "Receba %s" #: modules/visual_script/visual_script_property_selector.cpp -#, fuzzy msgid "Set %s" -msgstr "Fixar " +msgstr "Conjunto %s" + +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "Nome do pacote está faltando." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "Seguimentos de pacote necessitam ser de tamanho diferente de zero." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" +"O caractere '%s' não é permitido em nomes de pacotes de aplicações Android." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" +"Um dÃgito não pode ser o primeiro caractere em um seguimento de pacote." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" +"O caractere '%s' não pode ser o primeiro caractere em um segmento de pacote." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "O pacote deve ter pelo menos um separador '.'." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "Executável ADB não configurado nas opções do Editor." + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "OpenJDK jarsigner não configurado nas opções do Editor." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid public key for APK expansion." +msgstr "Chave pública inválida para expansão de APK." + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Nome de pacote inválido:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "Identificador está ausente." + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Identifier segments must be of non-zero length." +msgstr "O identificador deve ter comprimento diferente de zero." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "O caractere '%s' não é permitido no identificador." + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "Um digito não pode ser o primeiro caractere de um identificador." + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" +"O caractere '%s' não pode ser o primeiro caractere de um identificador." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "O identificador deve ter pelo menos um separador '.'." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" +"App Store Team ID não especificado - não é possÃvel configurar o projeto." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "O nome não é um identificador válido:" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Required icon is not specified in the preset." +msgstr "Ãcone necessário não especificado na predefinição." #: platform/javascript/export/export.cpp msgid "Run in Browser" @@ -9228,6 +9328,56 @@ msgstr "Não foi possÃvel ler o arquivo de imagem boot splash:" msgid "Using default boot splash image." msgstr "Usando imagem boot splash padrão." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "Nome único de pacote inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "GUID de produto inválido." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "GUID do editor inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Cor de fundo inválida." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Dimensões inválidas do logo da loja (deve ser 50x50)." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "Dimensões inválidas do logo quadrado de 44x44 (deve ser 44x44)." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "Dimensões inválidas do logo quadrado de 71x71 (deve ser 71x71)." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "Dimensões inválidas do logo quadrado de 150x150 (deve ser 150x150)." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "Dimensões inválidas do logo quadrado de 310x310 (deve ser 310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9246,15 +9396,14 @@ msgstr "" "ignorados." #: scene/2d/collision_object_2d.cpp -#, fuzzy msgid "" "This node has no shape, so it can't collide or interact with other objects.\n" "Consider adding a CollisionShape2D or CollisionPolygon2D as a child to " "define its shape." msgstr "" -"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 " +"Este nó não tem forma, por isso não pode colidir ou interagir com outros " +"objetos.\n" +"Considere adicionar um CollisionShape2D ou CollisionPolygon2D como filho " "para definir sua forma." #: scene/2d/collision_polygon_2d.cpp @@ -9294,6 +9443,8 @@ msgid "" "CPUParticles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"A animação CPUParticles2D requer o uso de um CanvasItemMaterial com " +"\"Animação de partÃculas\" ativada." #: scene/2d/light_2d.cpp msgid "" @@ -9337,6 +9488,13 @@ msgstr "" "O nó ParallaxLayer apenas funciona quando definido como filho de um nó " "ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9350,6 +9508,8 @@ msgid "" "Particles2D animation requires the usage of a CanvasItemMaterial with " "\"Particles Animation\" enabled." msgstr "" +"Animação Particles2D requer o uso de um CanvasItemMaterial com \"Animação de " +"PartÃculas\" ativada." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." @@ -9374,16 +9534,18 @@ msgstr "" #: scene/2d/skeleton_2d.cpp msgid "This Bone2D chain should end at a Skeleton2D node." -msgstr "" +msgstr "Esta cadeia Bone2D deve terminar em um nó Skeleton2D." #: scene/2d/skeleton_2d.cpp msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." -msgstr "" +msgstr "Um Bone2D só funciona com um Skeleton2D ou outro Bone2D como nó pai." #: scene/2d/skeleton_2d.cpp msgid "" "This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." msgstr "" +"Este osso não possui uma pose REST adequada. Vá para o nó Skeleton2D e " +"defina um." #: scene/2d/visibility_notifier_2d.cpp msgid "" @@ -9450,7 +9612,6 @@ msgid "Lighting Meshes: " msgstr "Iluminando Malhas: " #: scene/3d/collision_object.cpp -#, fuzzy msgid "" "This node has no shape, so it can't collide or interact with other objects.\n" "Consider adding a CollisionShape or CollisionPolygon as a child to define " @@ -9494,16 +9655,16 @@ msgstr "" "favor, crie um recurso de forma a ele!" #: scene/3d/cpu_particles.cpp -#, fuzzy msgid "Nothing is visible because no mesh has been assigned." -msgstr "" -"Nada está visÃvel porque as meshes não foram atribuÃdas a passes de desenho." +msgstr "Nada é visÃvel porque nenhuma malha foi atribuÃda." #: scene/3d/cpu_particles.cpp msgid "" "CPUParticles animation requires the usage of a SpatialMaterial with " "\"Billboard Particles\" enabled." msgstr "" +"A animação CPUParticles requer o uso de um SpatialMaterial com \"Billboard " +"Particles\" ativado." #: scene/3d/gi_probe.cpp msgid "Plotting Meshes" @@ -9525,6 +9686,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "Nada está visÃvel porque as meshes não foram atribuÃdas a passes de desenho." @@ -9534,24 +9702,21 @@ msgid "" "Particles animation requires the usage of a SpatialMaterial with \"Billboard " "Particles\" enabled." msgstr "" +"A animação de partÃculas requer o uso de um SpatialMaterial com \"Billboard " +"Particles\" ativado." #: scene/3d/path.cpp -#, fuzzy msgid "PathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D apenas funciona quando definido como filho de um nó Path2D." +msgstr "PathFollow só funciona quando definido como filho de um nó Path." #: scene/3d/path.cpp #, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D apenas funciona quando definido como filho de um nó Path2D." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" +"OrientedPathFollow requer \"Up Vector\" habilitado no recurso Curva do " +"Caminho pai." #: scene/3d/physics_body.cpp msgid "" @@ -9588,18 +9753,17 @@ msgstr "" #: scene/3d/soft_body.cpp msgid "This body will be ignored until you set a mesh" -msgstr "" +msgstr "Este corpo será ignorado até você definir uma malha" #: scene/3d/soft_body.cpp -#, fuzzy msgid "" "Size changes to SoftBody will be overridden by the physics engine when " "running.\n" "Change the size in children collision shapes instead." msgstr "" -"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, altere o tamanho nas formas de colisão filhas." +"As alterações de tamanho no SoftBody serão substituÃdas pelo mecanismo de " +"fÃsica durante a execução.\n" +"Altere o tamanho em formas de colisão de crianças." #: scene/3d/sprite_3d.cpp msgid "" @@ -9619,7 +9783,7 @@ msgstr "" #: scene/animation/animation_blend_tree.cpp msgid "On BlendTree node '%s', animation not found: '%s'" -msgstr "" +msgstr "No nó do BlendTree '%s', animação não encontrada: '%s'" #: scene/animation/animation_blend_tree.cpp msgid "Animation not found: '%s'" @@ -9627,37 +9791,41 @@ msgstr "Animação não encontrada: '%s'" #: scene/animation/animation_tree.cpp msgid "In node '%s', invalid animation: '%s'." -msgstr "" +msgstr "No nó '%s', animação inválida: '%s'." #: scene/animation/animation_tree.cpp msgid "Invalid animation: '%s'." msgstr "Animação inválida: '%s'." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Nothing connected to input '%s' of node '%s'." -msgstr "Desconectar '%s' do '%s'" +msgstr "Nada está ligado à entrada '%s' do nó '%s'." #: scene/animation/animation_tree.cpp msgid "A root AnimationNode for the graph is not set." -msgstr "" +msgstr "Um AnimationNode raiz para o gráfico não está definido." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "Path to an AnimationPlayer node containing animations is not set." -msgstr "Selecione um AnimationPlayer da Ãrvore de Cena para editar animações." +msgstr "" +"O caminho para um nó do AnimationPlayer contendo animações não está definido." #: scene/animation/animation_tree.cpp msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node." msgstr "" +"O caminho definido para o AnimationPlayer não leva a um nó do " +"AnimationPlayer." #: scene/animation/animation_tree.cpp -#, fuzzy msgid "AnimationPlayer root is not a valid node." -msgstr "Ãrvore de Animação é inválida." +msgstr "AnimationPlayer root não é um nó válido." #: scene/animation/animation_tree_player.cpp msgid "This node has been deprecated. Use AnimationTree instead." +msgstr "Este nó foi reprovado. Use AnimationTree em vez disso." + +#: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." msgstr "" #: scene/gui/color_picker.cpp @@ -9665,6 +9833,10 @@ msgid "Raw Mode" msgstr "Modo Bruto" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Adicionar cor atual como uma predefinição" @@ -9688,7 +9860,7 @@ msgstr "" #: scene/gui/range.cpp msgid "If exp_edit is true min_value must be > 0." -msgstr "" +msgstr "Se exp_edit for true, min_value deverá ser> 0." #: scene/gui/scroll_container.cpp msgid "" @@ -9741,29 +9913,41 @@ msgid "Invalid font size." msgstr "Tamanho de fonte inválido." #: scene/resources/visual_shader.cpp -#, fuzzy msgid "Input" -msgstr "Adicionar Entrada" +msgstr "Entrada" #: scene/resources/visual_shader_nodes.cpp -#, fuzzy msgid "Invalid source for shader." -msgstr "Origem inválida!" +msgstr "Fonte inválida para o shader." #: servers/visual/shader_language.cpp msgid "Assignment to function." msgstr "Atribuição à função." #: servers/visual/shader_language.cpp -#, fuzzy msgid "Assignment to uniform." msgstr "Atribuição à uniforme." #: servers/visual/shader_language.cpp -#, fuzzy msgid "Varyings can only be assigned in vertex function." msgstr "Variáveis só podem ser atribuÃdas na função de vértice." +#~ msgid "Warnings:" +#~ msgstr "Avisos:" + +#~ msgid "Font Size:" +#~ msgstr "Tamanho da Fonte:" + +#~ msgid "Line:" +#~ msgstr "Linha:" + +#~ msgid "Col:" +#~ msgstr "Coluna:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "OrientedPathFollow só funciona quando definido como filho de um nó Path." + #, fuzzy #~ msgid "Split already exists." #~ msgstr "A ação \"%s\" já existe!" @@ -11016,20 +11200,6 @@ msgstr "Variáveis só podem ser atribuÃdas na função de vértice." #~ msgid "Error creating the signature object." #~ msgstr "Erro ao escrever o PCK do projeto!" -#~ msgid "Invalid unique name." -#~ msgstr "Nome único inválido." - -#, fuzzy -#~ msgid "Invalid product GUID." -#~ msgstr "Tamanho de fonte inválido." - -#, fuzzy -#~ msgid "Invalid publisher GUID." -#~ msgstr "Caminho base inválido" - -#~ msgid "Invalid background color." -#~ msgstr "Cor de fundo inválida." - #, fuzzy #~ msgid "RAW Mode" #~ msgstr "Modo RAW" diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po index 198fa4ddb0..2cce74bd57 100644 --- a/editor/translations/pt_PT.po +++ b/editor/translations/pt_PT.po @@ -13,12 +13,12 @@ # Rueben Stevens <supercell03@gmail.com>, 2017. # SARDON <fabio3_Santos@hotmail.com>, 2017. # Vinicius Gonçalves <viniciusgoncalves21@gmail.com>, 2017. -# ssantos <ssantos@web.de>, 2018. +# ssantos <ssantos@web.de>, 2018, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:07+0000\n" +"PO-Revision-Date: 2019-02-01 12:09+0000\n" "Last-Translator: João Lopes <linux-man@hotmail.com>\n" "Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/" "godot-engine/godot/pt_PT/>\n" @@ -27,7 +27,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -554,21 +554,13 @@ msgstr "Zoom Out" msgid "Reset Zoom" msgstr "Repor Zoom" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "Avisos:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Tamanho do tipo de letra:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Linha:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "Avisos" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Coluna:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -870,8 +862,8 @@ msgstr "Apagar arquivos selecionados?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Apagar" @@ -1298,9 +1290,25 @@ msgid "Storing File:" msgstr "Arquivo de Armazenamento:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "Nenhum modelo de exportação encontrado no caminho previsto:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Empacotamento" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "Modelo de depuração personalizado não encontrado." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "Modelo de lançamento personalizado não encontrado." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Ficheiro Modelo não encontrado:" @@ -2598,9 +2606,8 @@ msgid "Assign..." msgstr "Atribuir..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "Caminho inválido" +msgstr "RID inválido" #: editor/editor_properties.cpp msgid "" @@ -3310,6 +3317,21 @@ msgstr "Predefinido..." msgid "Reimport" msgstr "Reimportar" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "Guardar cenas, reimportar e reiniciar" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "Alterar o tipo de um ficheiro importado requer reiniciar o editor." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"AVISO: Existem Ativos que usam este recurso, podendo não ser carregados " +"corretamente." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Falha ao carregar recurso." @@ -4268,6 +4290,19 @@ msgid "Move CanvasItem" msgstr "Mover CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"Atenção: as crianças de um contentor obtêm a sua posição e tamanho " +"determinados apenas pelos seus pais." + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Só âncoras" @@ -5176,28 +5211,24 @@ msgid "Create Polygon & UV" msgstr "Criar PolÃgono & UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Criar nova guia horizontal" +msgstr "Criar vértice interno" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "Remover Ponto In-Control" +msgstr "Remover Vértice Interno" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "PolÃgono inválido (precisa de 3 vértices diferentes)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Editar PolÃgono" +msgstr "Adicionar PolÃgono Personalizado" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Remover PolÃgono de Colisão" +msgstr "Remover PolÃgono Personalizado" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5224,14 +5255,12 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Ponto" +msgstr "Pontos" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "PolÃgono->UV" +msgstr "PolÃgonos" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -5268,12 +5297,16 @@ msgstr "Escalar PolÃgono" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." msgstr "" +"Crie um polÃgono personalizado. Habilita a renderização de polÃgonos " +"personalizados." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"Remover um polÃgono personalizado. Se não restar nenhum, a renderização de " +"polÃgonos personalizados é desativada." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -6264,7 +6297,8 @@ msgid "Post" msgstr "Pós" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +#, fuzzy +msgid "Nameless gizmo" msgstr "Bugiganga sem nome" #: editor/plugins/sprite_editor_plugin.cpp @@ -6340,10 +6374,16 @@ msgid "(empty)" msgstr "(vazio)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animações" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animação" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Velocidade (FPS):" @@ -6352,7 +6392,8 @@ msgid "Loop" msgstr "Ciclo" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Frames da Animação" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7106,6 +7147,48 @@ msgid "Browse" msgstr "Navegar" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "Renderizador:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"Qualidade visual superior\n" +"Todas as caracterÃsticas disponÃveis\n" +"IncompatÃvel com hardware antigo\n" +"Não recomendado para jogos Web" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 2.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"Qualidade visual inferior\n" +"Algumas caracterÃsticas indisponÃveis\n" +"Funciona na maioria do hardware\n" +"Recomendado para jogos Web" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" +"O Renderizador pode ser alterado mais tarde, mas as cenas poderão ter de ser " +"ajustadas." + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Projeto sem nome" @@ -7118,6 +7201,28 @@ msgid "Are you sure to open more than one project?" msgstr "Está seguro que quer abrir mais do que um Projeto?" #: editor/project_manager.cpp +#, fuzzy +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"A seguinte configuração do projeto foi gerada por um motor mais antigo, e " +"precisa de ser convertida para esta versão.\n" +"\n" +"%s\n" +"\n" +"Deseja convertê-la?\n" +"Aviso: Não conseguirá mais abrir o projeto em versões anteriores à deste " +"motor." + +#: editor/project_manager.cpp msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -7828,6 +7933,18 @@ msgid "Duplicate Node(s)" msgstr "Duplicar Nó(s)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "ImpossÃvel mudar nó em cenas herdadas, a ordem dos nós não pode mudar." + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "O nó deve pertencer à cena editada para se tornar root." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "Cenas instantâneas não se podem tornar root" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Apagar Nó(s)?" @@ -8634,10 +8751,6 @@ msgid "Build Project" msgstr "Construir Projeto" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Avisos" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Ver log" @@ -9037,6 +9150,95 @@ msgstr "Obter %s" msgid "Set %s" msgstr "Definir %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "Falta o nome do pacote." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "Os segmentos de pacote devem ser de comprimento diferente de zero." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" +"O caráter '%s' não é permitido em nomes de pacotes de aplicações Android." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "Um dÃgito não pode ser o primeiro caráter num segmento de pacote." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "O caráter '%s' não pode ser o primeiro caráter num segmento de pacote." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "O pacote deve ter pelo menos um separador '.'." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "O executável ADB não está configurado nas Configurações do Editor." + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "O jarsigner do OpenJDK não está configurado nas Definições do Editor." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" +"Depuração de keystore não configurado nas Configurações do Editor e nem na " +"predefinição." + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "Chave pública inválida para expansão APK." + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "Nome de pacote inválido:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "Falta o identificador." + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "Identificador de segmentos devem ser de comprimento diferente de zero." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "O caráter \"%s\" não é permitido no Identificador." + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" +"Um dÃgito não pode ser o primeiro caráter num segmento de Identificador." + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" +"O caráter \"%s\" não pode ser o primeiro caráter num segmento de " +"Identificador." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "O identificador deve ter pelo menos um separador \".\"." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" +"ID da equipa da App Store não especificado - não é possÃvel configurar o " +"projecto." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "Identificador Inválido:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "O Ãcone obrigatório não está especificado na predefinição." + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Executar no Navegador" @@ -9069,6 +9271,56 @@ msgstr "ImpossÃvel ler Ficheiro de imagem do ecrã de inicialização:" msgid "Using default boot splash image." msgstr "A usar imagem padrão de inicialização." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "Nome único de pacote inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "GUID do produto inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "GUID do editor inválido." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Cor de fundo inválida." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Inválidas dimensões da imagem do logotipo do Store (deve ser 50x50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" +"Dimensões inválidas do quadrado 44x44 da imagem do logotipo (deve ser 44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" +"Quadrado inválido 71x71 das dimensões da imagem do logotipo (deve ser 71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" +"Quadrado inválido 150x150 das dimensões da imagem do logotipo (deve ser " +"150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" +"Quadrado inválido 310x310 das dimensões da imagem do logotipo (deve ser " +"310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "Largura inválida da imagem do logotipo 310x150 (deve ser 310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Dimensões inválidas da imagem do ecrã inicial (deve ser 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9179,6 +9431,13 @@ msgstr "" "O Nó ParallaxLayer só funciona quando definido como filho de um Nó " "ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9368,6 +9627,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "Nada é visÃvel porque não foram atribuÃdas Meshes aos passos de desenho." @@ -9385,16 +9651,12 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow apenas funciona quando definido como filho de um Nó Path." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"OrientedPathFollow apenas funciona quando definido como filho de um Nó Path." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" -"OrientedPathFollow requer \"Up Vector\" ativado no recurso Curve do pai dele." +"PathFollow ROTATION_ORIENTED requer \"Up Vector\" habilitado no recurso de " +"Curva do Caminho do seu pai." #: scene/3d/physics_body.cpp msgid "" @@ -9504,10 +9766,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "Este nó foi depreciado. Use AnimationTree em vez disso." #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Modo Raw" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Adicionar cor atual como predefinição" @@ -9603,6 +9873,23 @@ msgstr "Atribuição a uniforme." msgid "Varyings can only be assigned in vertex function." msgstr "Variações só podem ser atribuÃdas na função vértice." +#~ msgid "Warnings:" +#~ msgstr "Avisos:" + +#~ msgid "Font Size:" +#~ msgstr "Tamanho do tipo de letra:" + +#~ msgid "Line:" +#~ msgstr "Linha:" + +#~ msgid "Col:" +#~ msgstr "Coluna:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "OrientedPathFollow apenas funciona quando definido como filho de um Nó " +#~ "Path." + #~ msgid "Split point with itself." #~ msgstr "Separar ponto consigo próprio." @@ -9615,9 +9902,6 @@ msgstr "Variações só podem ser atribuÃdas na função vértice." #~ msgid "Add Split" #~ msgstr "Adicionar Separação" -#~ msgid "Invalid Split: " -#~ msgstr "Separação inválida: " - #~ msgid "Remove Split" #~ msgstr "Remover Separação" @@ -10205,7 +10489,3 @@ msgstr "Variações só podem ser atribuÃdas na função vértice." #~ msgid "Sections:" #~ msgstr "Secções:" - -#, fuzzy -#~ msgid "Invalid unique name." -#~ msgstr "Nome de Ãndice propriedade inválido." diff --git a/editor/translations/ro.po b/editor/translations/ro.po index 4d4084ffa8..5423dd4352 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -558,22 +558,13 @@ msgstr "Zoom-aÈ›i Afară" msgid "Reset Zoom" msgstr "ResetaÈ›i Zoom-area" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Dimensiunea Conturului:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Linie:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Col:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -883,8 +874,8 @@ msgstr "ÅžtergeÈ›i fiÅŸierele selectate?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "ȘtergeÈ›i" @@ -1311,9 +1302,26 @@ msgid "Storing File:" msgstr "FiÅŸierul se Stochează:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Ambalare" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "FiÈ™ierul È™ablon nu a fost găsit:" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "FiÈ™ierul È™ablon nu a fost găsit:" @@ -3380,6 +3388,20 @@ msgstr "Presetare..." msgid "Reimport" msgstr "Reimportă" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +#, fuzzy +msgid "Changing the type of an imported file requires editor restart." +msgstr "Schimbarea driver-ului video necesită restartarea editorului." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "ÃŽncărcarea resursei a eÈ™uat." @@ -4370,6 +4392,16 @@ msgid "Move CanvasItem" msgstr "Editează ObiectulPânză" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Doar ancore" @@ -6418,7 +6450,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6498,8 +6530,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "AnimaÈ›ie" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "AnimaÈ›ie" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6510,8 +6548,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Nume AnimaÈ›ie:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7278,6 +7317,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7292,6 +7363,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7988,6 +8072,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8792,10 +8888,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "Vizualizează fiÈ™iere log" @@ -9187,6 +9279,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Nume nevalid." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Nume nevalid." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Execută în Browser" @@ -9219,6 +9394,54 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Nume nevalid." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Nume de Proiect Nevalid." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Cale nevalidă." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Nume nevalid." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9300,6 +9523,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9455,6 +9685,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9469,13 +9706,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9573,10 +9806,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9662,6 +9903,16 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Dimensiunea Conturului:" + +#~ msgid "Line:" +#~ msgstr "Linie:" + +#~ msgid "Col:" +#~ msgstr "Col:" + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "AutoLoad '%s' există deja!" @@ -9670,10 +9921,6 @@ msgstr "" #~ msgstr "Adaugă punct" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "Cale nevalidă." - -#, fuzzy #~ msgid "Remove Split" #~ msgstr "Elimină punct" diff --git a/editor/translations/ru.po b/editor/translations/ru.po index 3ac5ebb869..37dca29385 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -22,22 +22,25 @@ # Егор Бураков <fend.q@mail.ru>, 2018. # Grigore Antoniuc <grisa181@gmail.com>, 2018. # Neo6666666 <Neo6666666@gmail.com>, 2018. -# Roman <Steel_hawk@list.ru>, 2018. +# Roman <Steel_hawk@list.ru>, 2018, 2019. # Егор Ð Ñбуха (REgorion) <ryrgor@gmail.com>, 2018. # Yan <uvokinuvokines@gmail.com>, 2018. -# V. <Unit68189@gmail.com>, 2018. +# V. <Unit68189@gmail.com>, 2018, 2019. # Victor Butorin <mrwebsterchannel@gmail.com>, 2018. # ÐлекÑандр <ol-vin@mail.ru>, 2018, 2019. -# Ðнатолий Горбунов <afgorbunov@gmail.com>, 2018. -# Vadim Vergasov <vadim.vergasov2003@gmail.com>, 2018. +# Ðнатолий Горбунов <afgorbunov@gmail.com>, 2018, 2019. +# Vadim Vergasov <vadim.vergasov2003@gmail.com>, 2018, 2019. # ÐÑлан Снупов <aslan170505@gmail.com>, 2018. # Alexandr Eremeev <ae125529@gmail.com>, 2019. +# Ruaguzov Michael <miha890r@gmail.com>, 2019. +# Alexander Danilov <modos189@protonmail.com>, 2019. +# Sergey Nakhov <true.stalin.exe@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:07+0000\n" -"Last-Translator: ÐлекÑандр <ol-vin@mail.ru>\n" +"PO-Revision-Date: 2019-02-04 17:09+0000\n" +"Last-Translator: Sergey Nakhov <true.stalin.exe@gmail.com>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" "Language: ru\n" @@ -46,7 +49,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -570,21 +573,13 @@ msgstr "Отдалить" msgid "Reset Zoom" msgstr "СброÑить приближение" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "ПредупреждениÑ:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Размер шрифта:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Строка:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "ПредупреждениÑ" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Стлб:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -885,8 +880,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Удалить" @@ -995,7 +990,6 @@ msgid "Uncompressing Assets" msgstr "РаÑпаковка аÑÑетов" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Package installed successfully!" msgstr "Пакет уÑпешно уÑтановлен!" @@ -1240,7 +1234,7 @@ msgstr "Ðе в пути реÑурÑов." #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" -msgstr "Добавить автозагрузку" +msgstr "Добавить в автозагрузку" #: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp #: editor/plugins/animation_tree_editor_plugin.cpp scene/gui/file_dialog.cpp @@ -1314,9 +1308,26 @@ msgid "Storing File:" msgstr "Сохранение файла:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "Шаблоны ÑкÑпорта не найдены по ожидаемому пути:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Упаковывание" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "ПользовательÑкий отладочный шаблон не найден." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "ПользовательÑкий релизный пакет не найден." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Файл шаблона не найден:" @@ -2304,16 +2315,17 @@ msgid "Toggle Fullscreen" msgstr "Переключить полноÑкранный режим" #: editor/editor_node.cpp +#, fuzzy msgid "Open Editor Data/Settings Folder" msgstr "Открыть папку данных/наÑтроек редактора" #: editor/editor_node.cpp msgid "Open Editor Data Folder" -msgstr "Открыть папку данных редактора" +msgstr "Открыть папку редактора данных" #: editor/editor_node.cpp msgid "Open Editor Settings Folder" -msgstr "Открыть папку наÑтроек Редктора" +msgstr "Открыть папку наÑтроек редактора" #: editor/editor_node.cpp editor/project_export.cpp msgid "Manage Export Templates" @@ -2608,22 +2620,19 @@ msgid "[Empty]" msgstr "[ПуÑто]" #: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Assign..." -msgstr "Ðазначить.." +msgstr "ÐазначаетÑÑ..." #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" msgstr "Ðеверный путь" #: editor/editor_properties.cpp -#, fuzzy msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." msgstr "" -"Выбранные реÑурÑÑ‹ (%s) не ÑоответÑтвуют типу, ожидаемому Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ " +"Выбранные реÑурÑÑ‹ (%s) не ÑоответÑтвуют типам, ожидаемым Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ " "ÑвойÑтва (%s)." #: editor/editor_properties.cpp @@ -2643,8 +2652,8 @@ msgid "" msgstr "" "Ðевозможно Ñоздать ViewportTexture Ð´Ð»Ñ Ñтого реÑурÑа, потому что он не " "уÑтановлен как локальный Ð´Ð»Ñ Ñцены.\n" -"Включите ÑвойÑтво «Локально Ð´Ð»Ñ Ñцены» (и вÑе реÑурÑÑ‹, Ñодержащие его вверх " -"от узла)." +"ПожалуйÑта, включите ÑвойÑтво «Локально Ð´Ð»Ñ Ñцены» Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ (и Ð´Ð»Ñ Ð²Ñех " +"родительÑких реÑурÑов)." #: editor/editor_properties.cpp editor/property_editor.cpp msgid "Pick a Viewport" @@ -2709,7 +2718,7 @@ msgstr "Ðовое значение:" #: editor/editor_properties_array_dict.cpp msgid "Add Key/Value Pair" -msgstr "добавить пару Ключ/Значение" +msgstr "Добавить пару: Ключ/Значение" #: editor/editor_properties_array_dict.cpp #: editor/plugins/theme_editor_plugin.cpp @@ -2791,7 +2800,7 @@ msgstr "(Текущий)" #: editor/export_template_manager.cpp msgid "Retrieving mirrors, please wait..." -msgstr "Получение зеркал, пожалуйÑта подождите." +msgstr "Получение зеркал, пожалуйÑта подождите..." #: editor/export_template_manager.cpp msgid "Remove template version '%s'?" @@ -2803,7 +2812,7 @@ msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ архив шаблонов ÑкÑпР#: editor/export_template_manager.cpp msgid "Invalid version.txt format inside templates: %s." -msgstr "ÐедейÑтвительный формат version.txt внутри шаблонов: %s." +msgstr "Ðеверный формат version.txt файла внутри шаблонов: %s." #: editor/export_template_manager.cpp msgid "No version.txt found inside templates." @@ -2831,6 +2840,7 @@ msgstr "" #: editor/export_template_manager.cpp #: editor/plugins/asset_library_editor_plugin.cpp +#, fuzzy msgid "Can't resolve." msgstr "Ðе удаётÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ." @@ -3326,6 +3336,21 @@ msgstr "ПредуÑтановка..." msgid "Reimport" msgstr "Переимпортировать" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "Изменение типа импортированного файла потребует перезапуÑк редактора." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"Предупреждение: ÑущеÑтвуют объекты, которые иÑпользуют Ñтот реÑурÑ, они " +"могут переÑтать загружатьÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ‹Ð¼ образом." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Ðе удалоÑÑŒ загрузить реÑурÑ." @@ -3497,9 +3522,8 @@ msgstr "Добавить анимацию" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Load..." -msgstr "Загрузить.." +msgstr "Загрузка..." #: editor/plugins/animation_blend_space_1d_editor.cpp #: editor/plugins/animation_blend_space_2d_editor.cpp @@ -3883,9 +3907,8 @@ msgid "Connect nodes." msgstr "Соединить узлы." #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Remove selected node or transition." -msgstr "Удалить выделенный узел или переход" +msgstr "Удалить выделенный узел или переход." #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." @@ -4288,6 +4311,19 @@ msgid "Move CanvasItem" msgstr "ПеремеÑтить CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"Внимание: Положение и размер детей контейнера определÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ их " +"родителÑми." + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Только ÑкорÑ" @@ -5197,28 +5233,24 @@ msgid "Create Polygon & UV" msgstr "Создать Полигон и UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Создать новую горизонтальную направлÑющую" +msgstr "Создать внутреннюю вершину" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "Удалить входную контрольную точку" +msgstr "Удалить внутреннюю вершину" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "Ðекорректный Полигон (требуетÑÑ 3 различные вершины)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Редактировать полигон" +msgstr "Добавить пользовательÑкий полигон" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Удалить Полигон и Точку" +msgstr "Удалить пользовательÑкий полигон" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5229,9 +5261,8 @@ msgid "Transform Polygon" msgstr "Преобразовать полигон" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Paint Bone Weights" -msgstr "КоÑтные грузы Ð´Ð»Ñ ÐºÑ€Ð°Ñки" +msgstr "Изменить Ð²ÐµÑ ÐºÐ¾Ñтей" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Open Polygon 2D UV editor." @@ -5246,14 +5277,12 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Точка" +msgstr "Точки" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "Полигон -> UV" +msgstr "Полигоны" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -5290,21 +5319,23 @@ msgstr "МаÑштабировать полигон" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." msgstr "" +"Создать пользовательÑкий полигон. Включает рендер пользовательÑких полигонов." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"Удалить пользовательÑкий полигон. ЕÑли ничего не оÑталоÑÑŒ, рендер " +"пользовательÑких полигонов отключитÑÑ." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." msgstr "ПокраÑить веÑа Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ интенÑивноÑтью." #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Unpaint weights with specified intensity." -msgstr "СнÑть краÑку веÑа Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ интенÑивноÑтью" +msgstr "Убрать Ð²ÐµÑ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ интенÑивноÑтью." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Radius:" @@ -5897,7 +5928,7 @@ msgstr "Ð’Ñ‹Ñота" #: editor/plugins/spatial_editor_plugin.cpp msgid "Yaw" -msgstr "Отклонение" +msgstr "Ð Ñ‹Ñкание" #: editor/plugins/spatial_editor_plugin.cpp msgid "Objects Drawn" @@ -6288,7 +6319,7 @@ msgstr "ПоÑле" #: editor/plugins/spatial_editor_plugin.cpp #, fuzzy -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "БезымÑнный штуковина" #: editor/plugins/sprite_editor_plugin.cpp @@ -6365,10 +6396,16 @@ msgid "(empty)" msgstr "(пуÑто)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Ðнимации" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "ÐнимациÑ" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "СкороÑть (FPS):" @@ -6377,7 +6414,8 @@ msgid "Loop" msgstr "Зациклить" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Кадры анимации" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6443,7 +6481,7 @@ msgstr "Разделитель:" #: editor/plugins/texture_region_editor_plugin.cpp msgid "TextureRegion" -msgstr "TextureRegion" +msgstr "ОблаÑтьТекÑтуры" #: editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" @@ -6694,27 +6732,25 @@ msgid "Display Tile Names (Hold Alt Key)" msgstr "Отобразить имена плиток (удерживать нажатой клавишу Alt)" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove selected texture? This will remove all tiles which use it." -msgstr "Удалить выделенную текÑтуру и ВСЕ ПЛИТКИ, которые ее иÑпользуют?" +msgstr "" +"Удалить выделенную текÑтуру? Ðто удалит вÑе тайлы, которые её иÑпользуют." #: editor/plugins/tile_set_editor_plugin.cpp msgid "You haven't selected a texture to remove." msgstr "Ð’Ñ‹ не выбрали текÑтуру Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create from scene? This will overwrite all current tiles." -msgstr "Создавать из Ñцены? Ðто перезапишет вÑе текущие плитки." +msgstr "Создавать из Ñцены? Ðто перезапишет вÑе текущие тайлы." #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" msgstr "СлиÑние из Ñцены?" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Texture" -msgstr "Удалить шаблон" +msgstr "Удалить текÑтуру" #: editor/plugins/tile_set_editor_plugin.cpp msgid "%s file(s) were not added because was already on the list." @@ -6781,86 +6817,72 @@ msgstr "" "Ðажмите на другую плитку, чтобы отредактировать ее." #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Set Tile Region" -msgstr "Задать регион" +msgstr "Задать облаÑть тайла" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Tile" -msgstr "Создать папку" +msgstr "Создать тайл" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" msgstr "УÑтановить Иконку Плитки" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Bitmask" -msgstr "Редактировать фильтры" +msgstr "Редактировать битовую маÑку тайла" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Collision Polygon" -msgstr "Редактировать ÑущеÑтвующий полигон:" +msgstr "Редактирование полигона Ñтолкновений" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Occlusion Polygon" -msgstr "Редактировать полигон" +msgstr "Редактировать полигон перекрытиÑ" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Navigation Polygon" -msgstr "Создать Navigation Polygon" +msgstr "Редактирование полигона навигации" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Paste Tile Bitmask" -msgstr "Ð’Ñтавить битовую маÑку." +msgstr "Ð’Ñтавить битовую маÑку тайла" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" msgstr "ОчиÑтить Битовую МаÑку Плитки" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Tile" -msgstr "Удалить шаблон" +msgstr "Удалить тайл" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Collision Polygon" -msgstr "Удалить Полигон и Точку" +msgstr "Удалить полигон Ñтолкновений" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Occlusion Polygon" -msgstr "Создан затенÑющий полигон" +msgstr "Удалить полигон перекрытиÑ" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Remove Navigation Polygon" -msgstr "Создать Navigation Polygon" +msgstr "Удалить полигон навигации" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Edit Tile Priority" -msgstr "Редактировать фильтры" +msgstr "Редактировать приоритет тайла" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" msgstr "Редактирование Z индекÑа плитки" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Collision Polygon" -msgstr "Создать Navigation Polygon" +msgstr "Создать полигон Ñтолкновений" #: editor/plugins/tile_set_editor_plugin.cpp -#, fuzzy msgid "Create Occlusion Polygon" -msgstr "Создан затенÑющий полигон" +msgstr "Создать полигон перекрытиÑ" #: editor/plugins/tile_set_editor_plugin.cpp msgid "This property can't be changed." @@ -6979,9 +7001,8 @@ msgid "Feature List:" msgstr "СпиÑок ÑвойÑтв:" #: editor/project_export.cpp -#, fuzzy msgid "Script" -msgstr "Ðовый Ñкрипт" +msgstr "Скрипт" #: editor/project_export.cpp msgid "Script Export Mode:" @@ -7146,19 +7167,71 @@ msgid "Browse" msgstr "Обзор" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "БезымÑнный проект" #: editor/project_manager.cpp -#, fuzzy msgid "Can't open project at '%s'." -msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ проект" +msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ проект в \"%s\"." #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" msgstr "Ð’Ñ‹ уверены, что хотите открыть более одного проекта?" #: editor/project_manager.cpp +#, fuzzy +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"Файл наÑтроек проекта был Ñгенерирован Ñтарой верÑией движка и должен быть " +"преобразован Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ верÑии:\n" +"\n" +"%s\n" +"\n" +"Ð’Ñ‹ хотите преобразовать его?\n" +"Внимание: Ð’Ñ‹ больше не Ñможете открыть проект предыдущими верÑиÑми движка." + +#: editor/project_manager.cpp msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -7753,7 +7826,7 @@ msgstr "" #: editor/rename_dialog.cpp msgid "Regular Expressions" -msgstr "РегулÑрные ВыражениÑ" +msgstr "РегулÑрное выражение" #: editor/rename_dialog.cpp msgid "Post-Process" @@ -7768,9 +7841,8 @@ msgid "CamelCase to under_scored" msgstr "CamelCase в under_scored" #: editor/rename_dialog.cpp -#, fuzzy msgid "under_scored to CamelCase" -msgstr "under_scored в CamelCase" +msgstr "under_scored к CamelCase" #: editor/rename_dialog.cpp #, fuzzy @@ -7778,18 +7850,16 @@ msgid "Case" msgstr "РегиÑтр" #: editor/rename_dialog.cpp -#, fuzzy msgid "To Lowercase" -msgstr "нижний региÑтр" +msgstr "К нижнему региÑтру" #: editor/rename_dialog.cpp -#, fuzzy msgid "To Uppercase" -msgstr "ВЕРХÐИЙ РЕГИСТР" +msgstr "Ð’ верхний региÑтр" #: editor/rename_dialog.cpp msgid "Reset" -msgstr "СброÑ" +msgstr "СброÑить" #: editor/rename_dialog.cpp msgid "Error" @@ -7876,6 +7946,18 @@ msgid "Duplicate Node(s)" msgstr "Дублировать узел(узлы)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "Узел должен принадлежать редактируемой Ñцене, что бы Ñтать корневым." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "Мгновенные Ñцены не могут быть корневыми" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Удалить узел(узлы)?" @@ -7917,11 +7999,11 @@ msgstr "Создать корневой узел:" #: editor/scene_tree_dock.cpp msgid "2D Scene" -msgstr "2D-Ñцена" +msgstr "2D Ñцена" #: editor/scene_tree_dock.cpp msgid "3D Scene" -msgstr "3D-Ñцена" +msgstr "3D Ñцена" #: editor/scene_tree_dock.cpp msgid "User Interface" @@ -8145,7 +8227,6 @@ msgid "N/A" msgstr "Ð/Д" #: editor/script_create_dialog.cpp -#, fuzzy msgid "Open Script/Choose Location" msgstr "Открыть Скрипт/Выбрать МеÑто" @@ -8368,9 +8449,8 @@ msgid "Change Camera Size" msgstr "Изменить размер камеры" #: editor/spatial_editor_gizmos.cpp -#, fuzzy msgid "Change Notifier AABB" -msgstr "Изменить границы уведомителÑ" +msgstr "Изменить уведомитель AABB" #: editor/spatial_editor_gizmos.cpp msgid "Change Particles AABB" @@ -8477,7 +8557,6 @@ msgid "GDNative" msgstr "GDNative" #: modules/gdscript/gdscript_functions.cpp -#, fuzzy msgid "Step argument is zero!" msgstr "Ðргумент шага равен нулю!" @@ -8543,9 +8622,8 @@ msgid "GridMap Delete Selection" msgstr "Удалить выделенную Ñетку" #: modules/gridmap/grid_map_editor_plugin.cpp -#, fuzzy msgid "GridMap Fill Selection" -msgstr "Заполнить выделенную GridMap" +msgstr "Злить выделенную GridMap" #: modules/gridmap/grid_map_editor_plugin.cpp msgid "GridMap Duplicate Selection" @@ -8688,10 +8766,6 @@ msgid "Build Project" msgstr "Собрать проект" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "ПредупреждениÑ" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "ПроÑмотр журнала" @@ -8700,9 +8774,8 @@ msgid "End of inner exception stack trace" msgstr "Конец траÑÑировки внутреннего Ñтека иÑключений" #: modules/recast/navigation_mesh_editor_plugin.cpp -#, fuzzy msgid "Bake NavMesh" -msgstr "ИÑпечь NavMesh" +msgstr "Запечь NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -8929,7 +9002,6 @@ msgid "Connect Nodes" msgstr "ПриÑоединить узлы" #: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Connect Node Data" msgstr "ПриÑоединить данные узла" @@ -9094,6 +9166,90 @@ msgstr "Получить %s" msgid "Set %s" msgstr "Задать %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "ОтÑутÑтвует Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "ЧаÑти пакета не могут быть пуÑтыми." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "Символ '%s' не допуÑтим в имени пакета Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ Android." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "ЧиÑло не может быть первым Ñимволом в чаÑти пакета." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "Символ '%s' не может ÑтоÑть первым в Ñегменте пакета." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "Пакет должен иметь Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один '.' разделитель." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "ИÑполнÑемый файл ADB не Ñконфигурирован в наÑтройках редактора." + +#: platform/android/export/export.cpp +#, fuzzy +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "Значок OpenJDK jarsigner не Ñконфигурирован в наÑтройках редактора." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" +"ÐžÑ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð°Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ð° не наÑтроена ни в наÑтройках редактора, ни в " +"предуÑтановках." + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "ÐедейÑтвительный публичный ключ Ð´Ð»Ñ Ñ€Ð°ÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ APK." + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "ОтÑутÑтвует определитель." + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "Идентифицированные Ñегменты не должны быть пуÑтыми." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "Символ '%s' в идентификаторе не допуÑкаетÑÑ." + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "Цифра не может быть первым Ñимволом идентификатора Ñегмента." + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "Символ '%s' не может быть первым Ñимволом идентификатора Ñегмента." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "Идентификатор должен иметь Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один '.' разделитель." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "App Store Team ID не указан - невозможно наÑтроить проект." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "Ðеверный идентификатор:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "Требуемый значок не указан в предуÑтановке." + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "ЗапуÑтить в браузере" @@ -9126,6 +9282,50 @@ msgstr "Ðе удалоÑÑŒ прочитать файл Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð msgid "Using default boot splash image." msgstr "ИÑпользовать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки по умолчанию." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "Ðеверное уникальное Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "Ðеверный GUID продукта." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "Ðеверный GUID издателÑ." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "ÐедопуÑтимый цвет фона." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Ðеверные размеры логотипа Ð´Ð»Ñ Ð¼Ð°Ð³Ð°Ð·Ð¸Ð½Ð° (должны быть 50Ñ…50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "Ðеверные размеры квадратного логотипа 44x44 (должны быть 44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "Ðеверные размеры квадратного логотипа 71x71 (должны быть 71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "Ðеверные размеры квадратного логотипа 150x150 (должны быть 150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "Ðеверные размеры квадратного логотипа 310x310 (должны быть 310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "Ðеверные размеры широкого логотипа 310x150 (должны быть 310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Ðеверные размеры заÑтавки (должны быть 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9237,6 +9437,13 @@ msgstr "" "Узел ParallaxLayer работает только при уÑтановке его в качеÑтве дочернего " "узла ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9429,6 +9636,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "Ðичего не видно, потому что полиÑетки не были назначены на отриÑовку." @@ -9445,17 +9659,12 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow работает только при еÑли она дочь узла Path." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "OrientedPathFollow работает только еÑли она дочь узла Path." - -#: scene/3d/path.cpp -#, fuzzy msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" -"OrientedPathFollow требует, чтобы в его родительÑком пути были включены " -"векторы." +"PathFollow ROTATION_ORIENTED требует Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° \"Up Vector\" в " +"родительÑком реÑурÑе Path's Curve." #: scene/3d/physics_body.cpp msgid "" @@ -9562,10 +9771,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "Ðтот узел был удален. ВмеÑто Ñтого иÑпользуйте AnimationTree." #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "RAW режим" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Добавить текущий цвет как преÑет" @@ -9645,9 +9862,8 @@ msgid "Invalid font size." msgstr "ÐедопуÑтимый размер шрифта." #: scene/resources/visual_shader.cpp -#, fuzzy msgid "Input" -msgstr "Добавить вход" +msgstr "Вход" #: scene/resources/visual_shader_nodes.cpp msgid "Invalid source for shader." @@ -9667,6 +9883,21 @@ msgstr "Ðазначить форму" msgid "Varyings can only be assigned in vertex function." msgstr "Переменные могут быть назначены только в функции вершин." +#~ msgid "Warnings:" +#~ msgstr "ПредупреждениÑ:" + +#~ msgid "Font Size:" +#~ msgstr "Размер шрифта:" + +#~ msgid "Line:" +#~ msgstr "Строка:" + +#~ msgid "Col:" +#~ msgstr "Стлб:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "OrientedPathFollow работает только еÑли она дочь узла Path." + #~ msgid "Split point with itself." #~ msgstr "Точка разделениÑ." @@ -10910,54 +11141,6 @@ msgstr "Переменные могут быть назначены только #~ msgid "Error creating the package signature." #~ msgstr "Ошибка при Ñоздании подпиÑи пакета." -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "Шаблоны ÑкÑпорта не найдены.\n" -#~ "Скачайте и уÑтановите шаблоны ÑкÑпорта." - -#~ msgid "Custom debug package not found." -#~ msgstr "ПользовательÑкий отладочный пакет не найден." - -#~ msgid "Custom release package not found." -#~ msgstr "ПользовательÑкий релизный пакет не найден." - -#~ msgid "Invalid unique name." -#~ msgstr "Ðеверное уникальное имÑ." - -#~ msgid "Invalid product GUID." -#~ msgstr "Ðеверный GUID продукта." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "Ðеверный GUID издателÑ." - -#~ msgid "Invalid background color." -#~ msgstr "ÐедопуÑтимый цвет фона." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "Ðеверные размеры логотипа Ð´Ð»Ñ Ð¼Ð°Ð³Ð°Ð·Ð¸Ð½Ð° (должны быть 50Ñ…50)." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "Ðеверные размеры квадратного логотипа 44x44 (должны быть 44x44)." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "Ðеверные размеры квадратного логотипа 71x71 (должны быть 71x71)." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "" -#~ "Ðеверные размеры квадратного логотипа 150x150 (должны быть 150x150)." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "" -#~ "Ðеверные размеры квадратного логотипа 310x310 (должны быть 310x310)." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "Ðеверные размеры широкого логотипа 310x150 (должны быть 310x150)." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "Ðеверные размеры заÑтавки (должны быть 620x300)." - #~ msgid "RAW Mode" #~ msgstr "Грубый режим" diff --git a/editor/translations/si.po b/editor/translations/si.po index 64533d0af4..959b76bf18 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -536,20 +536,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -843,8 +835,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1261,9 +1253,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3181,6 +3189,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4117,6 +4138,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6094,7 +6125,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6170,8 +6201,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "à·à·Šâ€à¶»à·’à¶:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6182,7 +6219,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6916,6 +6953,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6929,6 +6998,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7607,6 +7689,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8393,10 +8487,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8784,6 +8874,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8816,6 +8987,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8897,6 +9112,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9052,6 +9274,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9066,13 +9295,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9165,10 +9390,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/sk.po b/editor/translations/sk.po index 815802416a..9af329047c 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -4,12 +4,13 @@ # This file is distributed under the same license as the Godot source code. # J08nY <johnenter@gmail.com>, 2016. # MineGame 159 <minegame459@gmail.com>, 2018. +# Zuzana Palenikova <sousana.is@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:42+0100\n" -"Last-Translator: MineGame 159 <minegame459@gmail.com>\n" +"PO-Revision-Date: 2019-02-01 12:10+0000\n" +"Last-Translator: Zuzana Palenikova <sousana.is@gmail.com>\n" "Language-Team: Slovak <https://hosted.weblate.org/projects/godot-engine/" "godot/sk/>\n" "Language: sk\n" @@ -17,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Poedit 2.2\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -35,29 +36,29 @@ msgid "Invalid input %i (not passed) in expression" msgstr "" #: core/math/expression.cpp +#, fuzzy msgid "self can't be used because instance is null (not passed)" -msgstr "" +msgstr "self nemožno použiÅ¥ lebo inÅ¡tancia je rovná null (not passed)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "" +msgstr "Neplatné operandy pre operátor %s, %s a %s." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "" +msgstr "Neplatný index typu %s pre základný typ %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" -msgstr "" +msgstr "Neplatný názov indexu '%s' pre základný typ %s" #: core/math/expression.cpp -#, fuzzy msgid "Invalid arguments to construct '%s'" -msgstr "Chybný argument convert(), použite TYPE_* konÅ¡tanty." +msgstr "Neplatné argumenty pre vytvorenie '%s'" #: core/math/expression.cpp msgid "On call to '%s':" -msgstr "" +msgstr "Pri volanà '%s':" #: editor/animation_bezier_editor.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -66,24 +67,23 @@ msgstr "" #: editor/animation_bezier_editor.cpp msgid "Balanced" -msgstr "" +msgstr "Vyvážený" #: editor/animation_bezier_editor.cpp msgid "Mirror" -msgstr "" +msgstr "Zrkadlový" #: editor/animation_bezier_editor.cpp msgid "Insert Key Here" -msgstr "" +msgstr "VložiÅ¥ tu kľúÄ" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Duplicate Selected Key(s)" -msgstr "DuplikovaÅ¥ výber" +msgstr "DuplikovaÅ¥ kľúÄ(e)" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" -msgstr "" +msgstr "ZmazaÅ¥ kľúÄ(e)" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" @@ -543,20 +543,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -853,8 +845,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1276,9 +1268,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3240,6 +3248,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4199,6 +4220,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6210,7 +6241,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6287,7 +6318,12 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "Popis:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6299,8 +6335,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Popis:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7065,6 +7102,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7078,6 +7147,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7765,6 +7847,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8571,10 +8665,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Súbor:" @@ -8973,6 +9063,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Nesprávna veľkosÅ¥ pÃsma." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Nesprávna veľkosÅ¥ pÃsma." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9006,6 +9179,53 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Nesprávna veľkosÅ¥ pÃsma." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Nesprávna veľkosÅ¥ pÃsma." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Nesprávna veľkosÅ¥ pÃsma." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9094,6 +9314,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9249,6 +9476,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9263,13 +9497,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9363,10 +9593,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/sl.po b/editor/translations/sl.po index 686338f198..9080db9490 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -561,22 +561,14 @@ msgstr "Oddalji" msgid "Reset Zoom" msgstr "Ponastavi PoveÄavo/PomanjÅ¡avo" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Vrstica:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Stolpec:" - #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" msgstr "Metoda v ciljnem gradniku mora biti navedena!" @@ -883,8 +875,8 @@ msgstr "IzbriÅ¡em izbrane datoteke?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "IzbriÅ¡i" @@ -1308,9 +1300,26 @@ msgid "Storing File:" msgstr "Shranjevanje Datoteke:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Pakiranje" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Predloge ni mogoÄe najti:" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Predloge ni mogoÄe najti:" @@ -3365,6 +3374,19 @@ msgstr "Prednastavitev..." msgid "Reimport" msgstr "Ponovno Uvozi" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Napaka pri nalaganju vira." @@ -4355,6 +4377,16 @@ msgid "Move CanvasItem" msgstr "Uredi Platno Stvari" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Samo SidriÅ¡Äa" @@ -6393,7 +6425,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6473,8 +6505,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Animacija" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animacija" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6485,8 +6523,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Ime Animacije:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7258,6 +7297,38 @@ msgid "Browse" msgstr "Brskaj" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7272,6 +7343,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7962,6 +8046,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8766,10 +8862,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Ogled datotek" @@ -9171,6 +9263,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Neveljavno ime." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Ime ni pravilen identifikator:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Ime ni pravilen identifikator:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9203,6 +9379,54 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Neveljaven indeks lastnosti imena." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Neveljavno Ime Projekta." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Neveljavna Pot" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Neveljavno ime." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9296,6 +9520,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9451,6 +9682,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9465,13 +9703,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9570,10 +9804,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Neobdelan naÄin" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Dodaj trenutno barvo kot prednastavljeno" @@ -9661,6 +9903,12 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Line:" +#~ msgstr "Vrstica:" + +#~ msgid "Col:" +#~ msgstr "Stolpec:" + #, fuzzy #~ msgid "Split already exists." #~ msgstr "SamodejnoNalaganje '%s' že obstaja!" @@ -9670,10 +9918,6 @@ msgstr "" #~ msgstr "Dodaj toÄko" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "Neveljavna Pot" - -#, fuzzy #~ msgid "Remove Split" #~ msgstr "Odstrani toÄko" @@ -9904,10 +10148,6 @@ msgstr "" #~ msgid "Replace By" #~ msgstr "Zamenjaj Z" -#, fuzzy -#~ msgid "Invalid unique name." -#~ msgstr "Neveljaven indeks lastnosti imena." - #~ msgid "" #~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but " #~ "unsequenced ports were specified." diff --git a/editor/translations/sq.po b/editor/translations/sq.po index 241a056ac4..ac4575f3a7 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -531,20 +531,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -838,8 +830,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1256,9 +1248,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3176,6 +3184,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4112,6 +4133,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6088,7 +6119,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6164,8 +6195,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Funksionet:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Përmirëso Animacionin" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6176,8 +6213,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Karakteristikat e animacionit." #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -6909,6 +6947,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6922,6 +6992,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7600,6 +7683,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8386,10 +8481,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8777,6 +8868,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8809,6 +8981,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8890,6 +9106,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9045,6 +9268,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9059,13 +9289,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9158,10 +9384,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index 6370ea4abd..9a2b69aea7 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -561,22 +561,13 @@ msgstr "Умањи" msgid "Reset Zoom" msgstr "РеÑетуј увеличање" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Поглед иÑпред" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Линија:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Колона:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -888,8 +879,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Обриши" @@ -1314,9 +1305,26 @@ msgid "Storing File:" msgstr "Складиштење датотеке:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "Паковање" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "ШаблонÑка датотека није пронађена:\n" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp #, fuzzy msgid "Template file not found:" @@ -3394,6 +3402,19 @@ msgstr "ПоÑтавке..." msgid "Reimport" msgstr "Поново увези" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Грешка при учитавању реÑурÑа." @@ -4377,6 +4398,16 @@ msgid "Move CanvasItem" msgstr "Уреди CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Само Ñидра" @@ -6447,7 +6478,7 @@ msgid "Post" msgstr "ПоÑле" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6529,10 +6560,16 @@ msgid "(empty)" msgstr "(празно)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Ðнимације" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Ðнимација" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Брзина (FPS):" @@ -6542,7 +6579,8 @@ msgid "Loop" msgstr "ЦиклуÑ" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Ðнимационе Ñлике" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7342,6 +7380,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7356,6 +7426,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8047,6 +8130,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8862,10 +8957,6 @@ msgid "Build Project" msgstr "Пројекат" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Погледај датотеке" @@ -9258,6 +9349,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Ðеважеће име." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Ðеважећа величина фонта." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9296,6 +9470,54 @@ msgstr "ÐеуÑпех при учитавању датотеке Ñа ÑличРmsgid "Using default boot splash image." msgstr "ÐеуÑпех при учитавању датотеке Ñа Ñличицом учитавања:\n" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Ðеважеће име." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Ðеважеће име." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Ðеважећи пут." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Ðеважеће име." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9377,6 +9599,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9532,6 +9761,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9546,13 +9782,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9650,10 +9882,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9740,6 +9980,16 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Поглед иÑпред" + +#~ msgid "Line:" +#~ msgstr "Линија:" + +#~ msgid "Col:" +#~ msgstr "Колона:" + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "ÐутоматÑко учитавање '%s' већ поÑтоји!" @@ -9748,10 +9998,6 @@ msgstr "" #~ msgstr "Додај тачку" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "Ðеважећи пут." - -#, fuzzy #~ msgid "Remove Split" #~ msgstr "Обриши тачку" diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index 63000c9397..c071299b51 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -544,20 +544,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -852,8 +844,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1270,9 +1262,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3191,6 +3199,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4134,6 +4155,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6120,7 +6151,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6197,8 +6228,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Optimizuj Animaciju" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Optimizuj Animaciju" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6209,8 +6246,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Optimizuj Animaciju" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -6956,6 +6994,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6969,6 +7039,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7650,6 +7733,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8438,10 +8533,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8829,6 +8920,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8861,6 +9033,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8942,6 +9158,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9097,6 +9320,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9111,13 +9341,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9210,10 +9436,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index 0e72210af0..cd0ec2c39a 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -580,23 +580,14 @@ msgstr "Zooma Ut" msgid "Reset Zoom" msgstr "Ã…terställ Zoom" -#: editor/code_editor.cpp +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp #, fuzzy -msgid "Warnings:" +msgid "Warnings" msgstr "Varning" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Vy framifrÃ¥n" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Rad:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Kolumn:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp #, fuzzy @@ -939,8 +930,8 @@ msgstr "Ta bort valda filer?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Ta bort" @@ -1439,10 +1430,27 @@ msgid "Storing File:" msgstr "Lagrar Fil:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp #, fuzzy msgid "Packing" msgstr "Packar" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Mallfil hittades inte:\n" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp #, fuzzy msgid "Template file not found:" @@ -3625,6 +3633,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Misslyckades att ladda resurs." @@ -4628,6 +4649,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6731,7 +6762,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6813,10 +6844,16 @@ msgid "(empty)" msgstr "(tom)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animationer" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animation" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "" @@ -6826,8 +6863,9 @@ msgid "Loop" msgstr "Loop" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Nytt Animationsnamn:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7625,6 +7663,38 @@ msgid "Browse" msgstr "Bläddra" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp #, fuzzy msgid "Unnamed Project" msgstr "Namnlöst Projekt" @@ -7640,6 +7710,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8365,6 +8448,18 @@ msgid "Duplicate Node(s)" msgstr "Duplicera Nod(er)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp #, fuzzy msgid "Delete Node(s)?" msgstr "Ta bort Nod(er)?" @@ -9225,11 +9320,6 @@ msgstr "Projekt" #: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy -msgid "Warnings" -msgstr "Varning" - -#: modules/mono/editor/mono_bottom_panel.cpp -#, fuzzy msgid "View log" msgstr "Visa Filer" @@ -9643,6 +9733,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Ogiltigt namn." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Ogiltig teckenstorlek." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Kör i Webbläsare" @@ -9679,6 +9852,54 @@ msgstr "Kunde inte skriva till filen:\n" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Ogiltigt namn." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "Projektnamn:" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "Ogiltig Sökväg" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "Ogiltigt namn." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9775,6 +9996,13 @@ msgstr "" "ParallaxLayer-Node fungerar bara när satt som en barn till en " "ParallaxBackground-Node." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9944,6 +10172,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9960,15 +10195,9 @@ msgstr "" "PathFollow2D fungerar bara när den är satt som ett barn till en Path2D-Node." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D fungerar bara när den är satt som ett barn till en Path2D-Node." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -10065,11 +10294,19 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp #, fuzzy msgid "Raw Mode" msgstr "Raw-Läge" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp #, fuzzy msgid "Add current color as a preset" msgstr "Lägg till nuvarande färg som en förinställning" @@ -10162,6 +10399,26 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Warnings:" +#~ msgstr "Varning" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Vy framifrÃ¥n" + +#~ msgid "Line:" +#~ msgstr "Rad:" + +#~ msgid "Col:" +#~ msgstr "Kolumn:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D fungerar bara när den är satt som ett barn till en Path2D-" +#~ "Node." + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "Autoload '%s' finns redan!" @@ -10170,10 +10427,6 @@ msgstr "" #~ msgstr "Lägg till Signal" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "Ogiltig Sökväg" - -#, fuzzy #~ msgid "Remove Split" #~ msgstr "Ta Bort Mall" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index 22071147f0..642060561b 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -541,20 +541,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -849,8 +841,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1267,9 +1259,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3188,6 +3196,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4126,6 +4147,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6103,7 +6134,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6179,7 +6210,12 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6191,7 +6227,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6927,6 +6963,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -6940,6 +7008,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7620,6 +7701,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8408,10 +8501,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8799,6 +8888,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8831,6 +9001,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -8912,6 +9126,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9067,6 +9288,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9081,13 +9309,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9180,10 +9404,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/te.po b/editor/translations/te.po new file mode 100644 index 0000000000..126dd37c11 --- /dev/null +++ b/editor/translations/te.po @@ -0,0 +1,9476 @@ +# Telugu translation of the Godot Engine editor +# Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. +# Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) +# This file is distributed under the same license as the Godot source code. +# suresh p <suresh9247@gmail.com>, 2019. +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2019-01-16 20:20+0000\n" +"Last-Translator: suresh p <suresh9247@gmail.com>\n" +"Language-Team: Telugu <https://hosted.weblate.org/projects/godot-engine/" +"godot/te/>\n" +"Language: te\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.4-dev\n" + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp +#: modules/mono/glue/gd_glue.cpp +#: modules/visual_script/visual_script_builtin_funcs.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "డీకోడింగౠబైటà±à°²à± కోసం తగిననà±à°¨à°¿ బైటà±à°²à± లేవౠ. లేదా చెలà±à°²à°¨à°¿ ఫారà±à°®à°¾à°Ÿà±(Format)." + +#: core/math/expression.cpp +#, fuzzy +msgid "Invalid input %i (not passed) in expression" +msgstr "à°µà±à°¯à°•à±à°¤à±€à°•రణలో చెలà±à°²à°¨à°¿ ఇనà±à°ªà±à°Ÿà±% i (ఆమోదించబడలేదà±)" + +#: core/math/expression.cpp +#, fuzzy +msgid "self can't be used because instance is null (not passed)" +msgstr "తనకౠతానà±à°—à°¾ ఉపయోగించà±à°•ోలేదౠఎందà±à°•ంటే instance à°’à°• శూనà±à°¯à°‚ (ఆమోదించబడలేదౠ)" + +#: core/math/expression.cpp +msgid "Invalid operands to operator %s, %s and %s." +msgstr "" + +#: core/math/expression.cpp +msgid "Invalid index of type %s for base type %s" +msgstr "" + +#: core/math/expression.cpp +msgid "Invalid named index '%s' for base type %s" +msgstr "" + +#: core/math/expression.cpp +msgid "Invalid arguments to construct '%s'" +msgstr "" + +#: core/math/expression.cpp +msgid "On call to '%s':" +msgstr "" + +#: editor/animation_bezier_editor.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Free" +msgstr "" + +#: editor/animation_bezier_editor.cpp +msgid "Balanced" +msgstr "" + +#: editor/animation_bezier_editor.cpp +msgid "Mirror" +msgstr "" + +#: editor/animation_bezier_editor.cpp +msgid "Insert Key Here" +msgstr "" + +#: editor/animation_bezier_editor.cpp +msgid "Duplicate Selected Key(s)" +msgstr "" + +#: editor/animation_bezier_editor.cpp +msgid "Delete Selected Key(s)" +msgstr "" + +#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "" + +#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Keyframe Time" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Keyframe Value" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Property Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "3D Transform Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Call Method Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Bezier Curve Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Audio Playback Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation Playback Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Add Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation Length Time (seconds)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation Looping" +msgstr "" + +#: editor/animation_track_editor.cpp +#: modules/visual_script/visual_script_editor.cpp +msgid "Functions:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Audio Clips:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Clips:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Toggle this track on/off." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Update Mode (How this property is set)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Interpolation Mode" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Loop Wrap Mode (Interpolate end with beginning on loop)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove this track." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Time (s): " +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Continuous" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Discrete" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Trigger" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Capture" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Nearest" +msgstr "" + +#: editor/animation_track_editor.cpp editor/plugins/curve_editor_plugin.cpp +#: editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Cubic" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clamp Loop Interp" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Wrap Loop Interp" +msgstr "" + +#: editor/animation_track_editor.cpp +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Duplicate Key(s)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Delete Key(s)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: editor/animation_track_editor.cpp editor/create_dialog.cpp +#: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp +#: editor/plugin_config_dialog.cpp +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/mesh_instance_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp +msgid "Create" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "AnimationPlayer can't animate itself, only other players." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Transform tracks only apply to Spatial-based nodes." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "" +"Audio tracks can only point to nodes of type:\n" +"-AudioStreamPlayer\n" +"-AudioStreamPlayer2D\n" +"-AudioStreamPlayer3D" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation tracks can only point to AnimationPlayer nodes." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "An animation player can't animate itself, only other players." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Not possible to add a new track without a root" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a key." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track is not of type Spatial, can't insert key" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Track path is invalid, so can't add a method key." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Method not found in object: " +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clipboard is empty" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "" +"This option does not work for Bezier editing, as it's only a single track." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Only show tracks from nodes selected in tree." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Group tracks by node or display them as plain list." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Snap (s): " +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation step value." +msgstr "" + +#: editor/animation_track_editor.cpp editor/editor_properties.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +#: editor/project_manager.cpp editor/project_settings_editor.cpp +#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp +msgid "Edit" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Animation properties." +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Copy Tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Paste Tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Delete Selection" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Go to Next Step" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Go to Previous Step" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Pick the node that will be animated:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Use Bezier Curves" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Optimize" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: editor/animation_track_editor.cpp +msgid "Select tracks to copy:" +msgstr "" + +#: editor/animation_track_editor.cpp editor/editor_properties.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Copy" +msgstr "" + +#: editor/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 editor/editor_help.cpp +msgid "No Matches" +msgstr "" + +#: editor/code_editor.cpp +msgid "Replaced %d occurrence(s)." +msgstr "" + +#: editor/code_editor.cpp editor/find_in_files.cpp +msgid "Match Case" +msgstr "" + +#: editor/code_editor.cpp editor/find_in_files.cpp +msgid "Whole Words" +msgstr "" + +#: editor/code_editor.cpp editor/rename_dialog.cpp +msgid "Replace" +msgstr "" + +#: editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom In" +msgstr "" + +#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom Out" +msgstr "" + +#: editor/code_editor.cpp +msgid "Reset Zoom" +msgstr "" + +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "" + +#: editor/code_editor.cpp +msgid "Line and column numbers" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "" +"Target method not found! Specify a valid method or attach a script to 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/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/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/groups_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/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 "Disconnect '%s' from '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnect all from signal: '%s'" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect..." +msgstr "" + +#: editor/connections_dialog.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Connect Signal: " +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Edit Connection: " +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Are you sure you want to remove all connections from the \"%s\" signal?" +msgstr "" + +#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Are you sure you want to remove all connections from this signal?" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Disconnect All" +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Edit..." +msgstr "" + +#: editor/connections_dialog.cpp +msgid "Go To Method" +msgstr "" + +#: editor/create_dialog.cpp +msgid "Change %s Type" +msgstr "" + +#: editor/create_dialog.cpp editor/project_settings_editor.cpp +#: 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/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Search:" +msgstr "" + +#: editor/create_dialog.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Matches:" +msgstr "" + +#: editor/create_dialog.cpp editor/plugin_config_dialog.cpp +#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Description:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will 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_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_search.cpp editor/editor_node.cpp +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +#: editor/property_selector.cpp editor/quick_open.cpp +#: editor/script_create_dialog.cpp +#: modules/visual_script/visual_script_property_selector.cpp +#: scene/gui/file_dialog.cpp +msgid "Open" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Remove selected files from the project? (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 editor/export_template_manager.cpp +msgid "Cannot remove:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Load failed due to missing dependencies:" +msgstr "" + +#: editor/dependency_editor.cpp editor/editor_node.cpp +msgid "Open Anyway" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: editor/dependency_editor.cpp +msgid "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/plugins/sprite_frames_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 "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/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Reset Volume" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Delete Effect" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Audio" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Add Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Master bus can't be deleted!" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Delete Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Duplicate Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Reset Bus Volume" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Move Audio Bus" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Save Audio Bus Layout As..." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Location for New Layout..." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Open Audio Bus Layout" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "There is no '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/editor_properties.cpp +#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp +#: editor/script_create_dialog.cpp +msgid "Load" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Load an existing Bus Layout." +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Save As" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Save this Bus Layout to a file." +msgstr "" + +#: editor/editor_audio_buses.cpp editor/import_dock.cpp +msgid "Load Default" +msgstr "" + +#: editor/editor_audio_buses.cpp +msgid "Load the default Bus Layout." +msgstr "" + +#: editor/editor_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 "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 +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 editor/editor_file_dialog.cpp +#: editor/plugins/animation_tree_editor_plugin.cpp scene/gui/file_dialog.cpp +msgid "Path:" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Node Name:" +msgstr "" + +#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp +#: editor/editor_profiler.cpp editor/settings_config_dialog.cpp +msgid "Name" +msgstr "" + +#: editor/editor_autoload_settings.cpp +msgid "Singleton" +msgstr "" + +#: editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: editor/editor_data.cpp +msgid "Storing local changes..." +msgstr "" + +#: editor/editor_data.cpp +msgid "Updating scene..." +msgstr "" + +#: editor/editor_data.cpp editor/editor_properties.cpp +msgid "[empty]" +msgstr "" + +#: editor/editor_data.cpp +msgid "[unsaved]" +msgstr "" + +#: editor/editor_dir_dialog.cpp +msgid "Please select a base directory first" +msgstr "" + +#: editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp +#: editor/filesystem_dock.cpp 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 "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp +msgid "Packing" +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + +#: editor/editor_export.cpp platform/javascript/export/export.cpp +msgid "Template file not found:" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Select Current Folder" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Select This Folder" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "Copy Path" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "Open in File Manager" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +#: editor/project_manager.cpp +msgid "Show in File Manager" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp +msgid "New Folder..." +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Refresh" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "" + +#: editor/editor_file_dialog.cpp editor/editor_node.cpp +#: editor/editor_properties.cpp editor/inspector_dock.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp +msgid "Save" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Save a File" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go Back" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go Forward" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Go Up" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Hidden Files" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Favorite" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Toggle Mode" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Focus Path" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Move Favorite Up" +msgstr "" + +#: editor/editor_file_dialog.cpp +msgid "Move Favorite Down" +msgstr "" + +#: editor/editor_file_dialog.cpp 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 editor/plugins/sprite_editor_plugin.cpp +#: editor/plugins/style_box_editor_plugin.cpp +msgid "Preview:" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "File:" +msgstr "" + +#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: editor/editor_file_system.cpp +msgid "(Re)Importing Assets" +msgstr "" + +#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: editor/editor_help.cpp +msgid "Class:" +msgstr "" + +#: editor/editor_help.cpp editor/scene_tree_editor.cpp +msgid "Inherits:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Brief Description:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Properties" +msgstr "" + +#: editor/editor_help.cpp +msgid "Properties:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Methods" +msgstr "" + +#: editor/editor_help.cpp +msgid "Methods:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Theme Properties" +msgstr "" + +#: editor/editor_help.cpp +msgid "Theme Properties:" +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 "Class Description" +msgstr "" + +#: editor/editor_help.cpp +msgid "Class Description:" +msgstr "" + +#: editor/editor_help.cpp +msgid "Online Tutorials:" +msgstr "" + +#: editor/editor_help.cpp +msgid "" +"There are currently no tutorials for this class, you can [color=$color][url=" +"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/" +"url][/color]." +msgstr "" + +#: editor/editor_help.cpp +msgid "Property Descriptions" +msgstr "" + +#: editor/editor_help.cpp +msgid "Property Descriptions:" +msgstr "" + +#: editor/editor_help.cpp +msgid "" +"There is currently no description for this property. Please help us by " +"[color=$color][url=$url]contributing one[/url][/color]!" +msgstr "" + +#: editor/editor_help.cpp +msgid "Method Descriptions" +msgstr "" + +#: editor/editor_help.cpp +msgid "Method Descriptions:" +msgstr "" + +#: editor/editor_help.cpp +msgid "" +"There is currently no description for this method. Please help us by [color=" +"$color][url=$url]contributing one[/url][/color]!" +msgstr "" + +#: editor/editor_help_search.cpp editor/editor_node.cpp +#: editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Display All" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Classes Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Methods Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Signals Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Constants Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Properties Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Theme Properties Only" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Member Type" +msgstr "" + +#: editor/editor_help_search.cpp +msgid "Class" +msgstr "" + +#: editor/editor_inspector.cpp editor/project_settings_editor.cpp +msgid "Property:" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Set" +msgstr "" + +#: editor/editor_inspector.cpp +msgid "Set Multiple:" +msgstr "" + +#: editor/editor_log.cpp +msgid "Output:" +msgstr "" + +#: editor/editor_log.cpp editor/editor_profiler.cpp +#: editor/editor_properties.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/property_editor.cpp editor/scene_tree_dock.cpp +#: editor/script_editor_debugger.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Clear" +msgstr "" + +#: editor/editor_log.cpp +msgid "Clear Output" +msgstr "" + +#: editor/editor_node.cpp +msgid "Project export failed with error code %d." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As..." +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +msgid "Can't open '%s'. The file could have been moved or deleted." +msgstr "" + +#: editor/editor_node.cpp +msgid "Error while parsing '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unexpected end of file '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Missing '%s' or its dependencies." +msgstr "" + +#: editor/editor_node.cpp +msgid "Error while loading '%s'." +msgstr "" + +#: editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: editor/editor_node.cpp +msgid "This operation can't be done without a tree root." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This scene can't be saved because there is a cyclic instancing inclusion.\n" +"Please resolve it and then attempt to save again." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't " +"be satisfied." +msgstr "" + +#: editor/editor_node.cpp editor/scene_tree_dock.cpp +msgid "Can't overwrite scene that is still open!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource belongs to a scene that was imported, so it's not editable.\n" +"Please read the documentation relevant to importing scenes to better " +"understand this workflow." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"This resource belongs to a scene that was instanced or inherited.\n" +"Changes to it 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 "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' There seems to be an error in " +"the code, please check the syntax." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Unable to load addon script from path: '%s' Base type is not EditorPlugin." +msgstr "" + +#: editor/editor_node.cpp +msgid "Unable to load addon script from path: '%s' Script is not in tool mode." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Scene '%s' was automatically imported, so it can't be modified.\n" +"To make changes to it, a new inherited scene can be created." +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: editor/editor_node.cpp +msgid "Clear Recent Scenes" +msgstr "" + +#: editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: editor/editor_node.cpp editor/import_dock.cpp +#: editor/script_create_dialog.cpp +msgid "Default" +msgstr "" + +#: editor/editor_node.cpp editor/editor_properties.cpp +#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp +msgid "Show in FileSystem" +msgstr "" + +#: editor/editor_node.cpp +msgid "Play This Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Close Tab" +msgstr "" + +#: editor/editor_node.cpp +msgid "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 scene/gui/text_edit.cpp +msgid "Redo" +msgstr "" + +#: editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: editor/editor_node.cpp +msgid "Project" +msgstr "" + +#: editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: editor/editor_node.cpp editor/project_export.cpp +msgid "Export" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/tile_set_editor_plugin.cpp +msgid "Tools" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Project Data Folder" +msgstr "" + +#: editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp +#: editor/project_export.cpp +msgid "Debug" +msgstr "" + +#: editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: editor/editor_node.cpp +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 +msgid "Open Editor Data/Settings Folder" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Editor Data Folder" +msgstr "" + +#: editor/editor_node.cpp +msgid "Open Editor Settings Folder" +msgstr "" + +#: editor/editor_node.cpp editor/project_export.cpp +msgid "Manage Export Templates" +msgstr "" + +#: editor/editor_node.cpp +msgid "Help" +msgstr "" + +#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp +#: editor/project_settings_editor.cpp editor/rename_dialog.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 editor/editor_profiler.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 "Changing the video driver requires restarting the editor." +msgstr "" + +#: editor/editor_node.cpp editor/project_settings_editor.cpp +#: editor/settings_config_dialog.cpp +msgid "Save & Restart" +msgstr "" + +#: editor/editor_node.cpp +msgid "Spins when the editor window 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 editor/plugins/asset_library_editor_plugin.cpp +#: editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: editor/editor_node.cpp +msgid "Node" +msgstr "" + +#: editor/editor_node.cpp +msgid "Expand Bottom Panel" +msgstr "" + +#: editor/editor_node.cpp scene/resources/visual_shader.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 "Edit Plugin" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +msgid "Update" +msgstr "" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Version:" +msgstr "" + +#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp +msgid "Author:" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: editor/editor_plugin_settings.cpp +msgid "Edit:" +msgstr "" + +#: editor/editor_profiler.cpp editor/plugins/animation_state_machine_editor.cpp +#: editor/rename_dialog.cpp +msgid "Start" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "Physics Frame %" +msgstr "" + +#: editor/editor_profiler.cpp +msgid "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_properties.cpp +msgid "On" +msgstr "" + +#: editor/editor_properties.cpp +msgid "Layer" +msgstr "" + +#: editor/editor_properties.cpp +msgid "Bit %d, value %d" +msgstr "" + +#: editor/editor_properties.cpp +msgid "[Empty]" +msgstr "" + +#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp +msgid "Assign..." +msgstr "" + +#: editor/editor_properties.cpp +msgid "Invalid RID" +msgstr "" + +#: editor/editor_properties.cpp +msgid "" +"The selected resource (%s) does not match any type expected for this " +"property (%s)." +msgstr "" + +#: editor/editor_properties.cpp +msgid "" +"Can't create a ViewportTexture on resources saved as a file.\n" +"Resource needs to belong to a scene." +msgstr "" + +#: editor/editor_properties.cpp +msgid "" +"Can't create a ViewportTexture on this resource because it's not set as " +"local to scene.\n" +"Please switch on the 'local to scene' property on it (and all resources " +"containing it up to a node)." +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Pick a Viewport" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "New Script" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "New %s" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Make Unique" +msgstr "" + +#: editor/editor_properties.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +msgid "Paste" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Convert To %s" +msgstr "" + +#: editor/editor_properties.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Open Editor" +msgstr "" + +#: editor/editor_properties.cpp editor/property_editor.cpp +msgid "Selected node is not a Viewport!" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "Size: " +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "Page: " +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "New Key:" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "New Value:" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +msgid "Add Key/Value Pair" +msgstr "" + +#: editor/editor_properties_array_dict.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Remove Item" +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_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 +#: editor/plugins/asset_library_editor_plugin.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: %s." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "No version.txt found inside templates." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error creating path for templates:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Extracting Export Templates" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Importing:" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"No download links found for this version. Direct download is only available " +"for official releases." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't resolve." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Can't connect." +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "No response." +msgstr "" + +#: editor/export_template_manager.cpp +#: 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 "Download Complete." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "" +"Templates installation failed. The problematic templates archives can be " +"found at '%s'." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Error requesting url: " +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Connecting to Mirror..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Disconnected" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Resolving" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't Resolve" +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Connecting..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Can't Connect" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Connected" +msgstr "" + +#: editor/export_template_manager.cpp +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Requesting..." +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Downloading" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "Connection Error" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "SSL Handshake Error" +msgstr "" + +#: editor/export_template_manager.cpp +msgid "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: (Shift+Click: Open in Browser)" +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 "Favorites" +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 editor/scene_tree_editor.cpp +msgid "No name provided." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Provided name contains invalid characters" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "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 "Open Scene(s)" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Instance" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Add to favorites" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Remove from favorites" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Edit Dependencies..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "View Owners..." +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +msgid "Rename..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Duplicate..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Move To..." +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +msgid "New Script..." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "New Resource..." +msgstr "" + +#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp +msgid "Expand All" +msgstr "" + +#: editor/filesystem_dock.cpp editor/script_editor_debugger.cpp +msgid "Collapse All" +msgstr "" + +#: editor/filesystem_dock.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/project_manager.cpp editor/rename_dialog.cpp +#: editor/scene_tree_dock.cpp +msgid "Rename" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Previous 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 split mode" +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Search files" +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 +msgid "There is already file or folder with the same name in this location." +msgstr "" + +#: editor/filesystem_dock.cpp +msgid "Overwrite" +msgstr "" + +#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Find in Files" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Find:" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Folder:" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Filters:" +msgstr "" + +#: editor/find_in_files.cpp editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp +msgid "Find..." +msgstr "" + +#: editor/find_in_files.cpp editor/plugins/script_text_editor.cpp +msgid "Replace..." +msgstr "" + +#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp +msgid "Cancel" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Find: " +msgstr "" + +#: editor/find_in_files.cpp +msgid "Replace: " +msgstr "" + +#: editor/find_in_files.cpp +msgid "Replace all (no undo)" +msgstr "" + +#: editor/find_in_files.cpp +msgid "Searching..." +msgstr "" + +#: editor/find_in_files.cpp +msgid "Search complete" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Group name already exists." +msgstr "" + +#: editor/groups_editor.cpp +msgid "Invalid group name." +msgstr "" + +#: editor/groups_editor.cpp editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Nodes not in Group" +msgstr "" + +#: editor/groups_editor.cpp editor/scene_tree_dock.cpp +msgid "Filter nodes" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Nodes in Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: editor/groups_editor.cpp +msgid "Manage Groups" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Single Scene" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Materials" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Materials" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Materials+Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import with Separate Objects+Materials+Animations" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Multiple Scenes" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Import as Multiple Scenes+Materials" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Importing Scene..." +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Generating Lightmaps" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Generating for Mesh: " +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Running Custom Script..." +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Invalid/broken script for post-import (check console):" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Error running post-import script:" +msgstr "" + +#: editor/import/resource_importer_scene.cpp +msgid "Saving..." +msgstr "" + +#: editor/import_dock.cpp +msgid "Set as Default for '%s'" +msgstr "" + +#: editor/import_dock.cpp +msgid "Clear Default for '%s'" +msgstr "" + +#: editor/import_dock.cpp +msgid " Files" +msgstr "" + +#: editor/import_dock.cpp +msgid "Import As:" +msgstr "" + +#: editor/import_dock.cpp editor/property_editor.cpp +msgid "Preset..." +msgstr "" + +#: editor/import_dock.cpp +msgid "Reimport" +msgstr "" + +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Failed to load resource." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Expand All Properties" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Collapse All Properties" +msgstr "" + +#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +msgid "Save As..." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Copy Params" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Paste Params" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Edit Resource Clipboard" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Copy Resource" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Make Built-In" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Open in Help" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "History of recently edited objects." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Object properties." +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Filter properties" +msgstr "" + +#: editor/inspector_dock.cpp +msgid "Changes may be lost!" +msgstr "" + +#: editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Edit a Plugin" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Create a Plugin" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Plugin Name:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Subfolder:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Language:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Script Name:" +msgstr "" + +#: editor/plugin_config_dialog.cpp +msgid "Activate now?" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Polygon" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Edit Polygon" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Insert Point" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Edit Polygon (Remove Point)" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "Remove Polygon And Point" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Create points." +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +msgid "" +"Edit points.\n" +"LMB: Move Point\n" +"RMB: Erase Point" +msgstr "" + +#: editor/plugins/abstract_polygon_2d_editor.cpp +#: editor/plugins/animation_blend_space_1d_editor.cpp +msgid "Erase points." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Load..." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "This type of node can't be used. Only root nodes are allowed." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "" +"AnimationTree is inactive.\n" +"Activate to enable playback, check node warnings if activation fails." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Set the blending position within the space" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Select and move points, create points with RMB." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp +msgid "Enable snap and show grid." +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Point" +msgstr "" + +#: editor/plugins/animation_blend_space_1d_editor.cpp +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Open Animation Node" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Triangle already exists" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "BlendSpace2D does not belong to an AnimationTree node." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "No triangles exist, so no blending can take place." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Create triangles by connecting points." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Erase points and triangles." +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +msgid "Generate blend triangles automatically (instead of manually)" +msgstr "" + +#: editor/plugins/animation_blend_space_2d_editor.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Edit Filters" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Output node can't be added to the blend tree." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Unable to connect, port may be in use or connection may be invalid." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "No animation player set, so unable to retrieve track names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Player path set is invalid, so unable to retrieve track names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "" +"Animation player has no valid root node path, so unable to retrieve track " +"names." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Add Node..." +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "Edit Filtered Tracks:" +msgstr "" + +#: editor/plugins/animation_blend_tree_editor_plugin.cpp +msgid "Enable filtering" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Delete Animation?" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Invalid animation name!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation name already exists!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation to copy!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation resource on clipboard!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "No animation to edit!" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "New" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Transitions..." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Open in Inspector" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "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 "Pin AnimationPlayer" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: editor/plugins/animation_player_editor_plugin.cpp +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp +#: 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_state_machine_editor.cpp +msgid "End" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Immediate" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Sync" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "At End" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Travel" +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Start and end nodes are needed for a sub-transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "No playback resource set at path: %s." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "" +"Select and move nodes.\n" +"RMB to add new nodes.\n" +"Shift+LMB to create connections." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Create new nodes." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Connect nodes." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Remove selected node or transition." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Toggle autoplay this animation on start, restart or seek to zero." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Set the end animation. This is useful for sub-transitions." +msgstr "" + +#: editor/plugins/animation_state_machine_editor.cpp +msgid "Transition: " +msgstr "" + +#: editor/plugins/animation_tree_editor_plugin.cpp +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "AnimationTree" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Import Animations..." +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: editor/plugins/animation_tree_player_editor_plugin.cpp +msgid "Filters..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Contents:" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "View Files" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "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 "Downloading (%s / %s)..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Downloading..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Resolving..." +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Error making request" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Idle" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "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 "Previous" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Next" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +msgid "Last" +msgstr "" + +#: editor/plugins/asset_library_editor_plugin.cpp +#: 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 editor/project_manager.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 editor/rename_dialog.cpp +msgid "Preview" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +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 "Move pivot" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotate CanvasItem" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move anchor" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Resize CanvasItem" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Scale CanvasItem" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move CanvasItem" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "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 "" +"Warning: Children of a container get their position and size determined only " +"by their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/texture_region_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp +msgid "Zoom Reset" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +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 +msgid "Scale Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Toggle 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 +#: editor/plugins/spatial_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 node center" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to other nodes" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap to guides" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +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 "Skeleton Options" +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 +msgid "Make Custom Bone(s) from Node(s)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Custom Bones" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: 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 "Show Origin" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Viewport" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Show Group And Lock Icons" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Layout" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert keys." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Multiply grid step by 2" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Divide grid step by 2" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Add %s" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Adding %s..." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Cannot instantiate multiple nodes without root." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change default type" +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Drag & drop + Shift : Add node as sibling\n" +"Drag & drop + Alt : Change node type" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Polygon3D" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +msgid "CPUParticles" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Mesh" +msgstr "" + +#: editor/plugins/cpu_particles_editor_plugin.cpp +#: editor/plugins/particles_editor_plugin.cpp +msgid "Create Emission Points From Node" +msgstr "" + +#: editor/plugins/curve_editor_plugin.cpp +msgid "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/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh 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 +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Model has no UV in this layer" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh has not surface to create outlines from!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create 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/mesh_library_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: editor/plugins/mesh_library_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: editor/plugins/multimesh_editor_plugin.cpp +msgid "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_polygon_editor_plugin.cpp +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generating Visibility Rect" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "Can only set point into a ParticlesMaterial process material" +msgstr "" + +#: editor/plugins/particles_2d_editor_plugin.cpp +msgid "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 "Convert to CPUParticles" +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 "Faces contain no area!" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +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 "Create Emitter" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Emission Points:" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Surface Points" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Surface Points+Normal (Directed)" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Emission Source: " +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "A processor material of type 'ParticlesMaterial' is required." +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generating AABB" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: editor/plugins/particles_editor_plugin.cpp +msgid "Generate Visibility AABB" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Out-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove In-Control from Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Left Click: Split Segment (in curve)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp +#: editor/project_export.cpp +msgid "Options" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Mirror Handle Angles" +msgstr "" + +#: editor/plugins/path_2d_editor_plugin.cpp +#: editor/plugins/path_editor_plugin.cpp +msgid "Mirror Handle Lengths" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Position" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove Out-Control Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Remove In-Control Point" +msgstr "" + +#: editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: editor/plugins/physical_bone_plugin.cpp +msgid "Move joint" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"The skeleton property of the Polygon2D does not point to a Skeleton2D node" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Sync Bones" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"No texture in this polygon.\n" +"Set a texture to be able to edit UV." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Polygon & UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Internal Vertex" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Remove Internal Vertex" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Invalid Polygon (need 3 different vertices)" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Add Custom Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Remove Custom Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Paint Bone Weights" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Open Polygon 2D UV editor." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Points" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygons" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Bones" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Points" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create a custom polygon. Enables custom polygon rendering." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "" +"Remove a custom polygon. If none remain, custom polygon rendering is " +"disabled." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Paint weights with specified intensity." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Unpaint weights with specified intensity." +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Radius:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Settings" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +#: 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/polygon_2d_editor_plugin.cpp +msgid "Configure Grid:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset X:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Offset Y:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step X:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Grid Step Y:" +msgstr "" + +#: editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Sync Bones to Polygon" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp +#: editor/scene_tree_editor.cpp +msgid "Type:" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ResourcePreloader" +msgstr "" + +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "AnimationTree has no path set to an AnimationPlayer" +msgstr "" + +#: editor/plugins/root_motion_editor_plugin.cpp +msgid "Path to AnimationPlayer is invalid" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Clear Recent Files" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close and save changes?" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error writing TextFile:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error: could not load file." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error could not load file." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error saving file!" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error Saving" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error Importing" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "New TextFile..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open File" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save File As..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid " Class Reference" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Toggle alphabetical sorting of the method list." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Sort" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Move Up" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Move Down" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Next script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Previous script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "File" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Open..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Copy Script Path" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Previous" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +#: editor/plugins/theme_editor_plugin.cpp +msgid "Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Import Theme..." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Close 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 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 reference documentation." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "Discard" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: editor/plugins/script_editor_plugin.cpp +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 "Search Results" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "(ignore)" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Function" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Standard" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Only resources from filesystem can be dropped." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Lookup Symbol" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Pick Color" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Convert Case" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Uppercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Lowercase" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Capitalize" +msgstr "" + +#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp +msgid "Syntax Highlighter" +msgstr "" + +#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Cut" +msgstr "" + +#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp +#: scene/gui/text_edit.cpp +msgid "Select All" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Delete Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Indent Left" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Indent Right" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Toggle Comment" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold/Unfold Line" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Fold All Lines" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Unfold All Lines" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Clone Down" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Complete Symbol" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "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 "Go to Next Breakpoint" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Previous Breakpoint" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Find Previous" +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Find in Files..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Function..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Go to Line..." +msgstr "" + +#: editor/plugins/script_text_editor.cpp +msgid "Contextual Help" +msgstr "" + +#: editor/plugins/shader_editor_plugin.cpp +msgid "Shader" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "This skeleton has no bones, create some children Bone2D nodes." +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Skeleton2D" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Make Rest Pose (From Bones)" +msgstr "" + +#: editor/plugins/skeleton_2d_editor_plugin.cpp +msgid "Set Bones to Rest Pose" +msgstr "" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Create physical bones" +msgstr "" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Skeleton" +msgstr "" + +#: editor/plugins/skeleton_editor_plugin.cpp +msgid "Create physical skeleton" +msgstr "" + +#: editor/plugins/skeleton_ik_editor_plugin.cpp +msgid "Play IK" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling: " +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translating: " +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Yaw" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Objects Drawn" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Material Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Shader Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Surface Changes" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Draw Calls" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Vertices" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "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 "No parent to instance a child at." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Lock View Rotation" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Display Unshaded" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Environment" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Gizmos" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Information" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View FPS" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Half Resolution" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Doppler Enable" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Cinematic Preview" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Left" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Right" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Forward" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Backwards" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Up" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Down" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Freelook Speed Modifier" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Rotation Locked" +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 "Snap object to floor" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog..." +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Settings" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: editor/plugins/spatial_editor_plugin.cpp +msgid "Nameless gizmo" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite is empty!" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Can't convert a sprite using animation frames to mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Invalid geometry, can't replace by mesh." +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Sprite" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Convert to 2D Mesh" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Create 2D Mesh" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Simplification: " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Grow (Pixels): " +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Update Preview" +msgstr "" + +#: editor/plugins/sprite_editor_plugin.cpp +msgid "Settings:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "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 "New Animation" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "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/texture_region_editor_plugin.cpp +msgid "Set Region Rect" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Set Margin" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap Mode:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +#: scene/resources/visual_shader.cpp +msgid "None" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Pixel Snap" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Snap" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Auto Slice" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Offset:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Step:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "Sep.:" +msgstr "" + +#: editor/plugins/texture_region_editor_plugin.cpp +msgid "TextureRegion" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "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 +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 "Radio Item" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Checked Radio 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 +msgid "Has,Many,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 +msgid "Data Type:" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp +msgid "Style" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Fix Invalid Tiles" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Cut Selection" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Line Draw" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rectangle Paint" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket Fill" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Find Tile" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "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 "Copy Selection" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate left" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate right" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Flip horizontally" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Flip vertically" +msgstr "" + +#: editor/plugins/tile_map_editor_plugin.cpp +msgid "Clear transform" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Texture(s) to TileSet." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove selected Texture from TileSet." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Copy bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Paste bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Erase bitmask." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create a new polygon." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Keep polygon inside region Rect." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Enable snap and show grid (configurable via the Inspector)." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Display Tile Names (Hold Alt Key)" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove selected texture? This will remove all tiles which use it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "You haven't selected a texture to remove." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene? This will overwrite all current tiles." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Texture" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "%s file(s) were not added because was already on the list." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Drag handles to edit Rect.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete selected Rect." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select current edited sub-tile.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Delete polygon." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"LMB: Set bit on.\n" +"RMB: Set bit off.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to use as icon, this will be also used on invalid autotile " +"bindings.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to change its priority.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "" +"Select sub-tile to change its z index.\n" +"Click on another Tile to edit it." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Set Tile Region" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Set Tile Icon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Navigation Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Paste Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Clear Tile Bitmask" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Tile" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Navigation Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Priority" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Edit Tile Z Index" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Collision Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "Create Occlusion Polygon" +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "This property can't be changed." +msgstr "" + +#: editor/plugins/tile_set_editor_plugin.cpp +msgid "TileSet" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "Light" +msgstr "" + +#: editor/plugins/visual_shader_editor_plugin.cpp +msgid "VisualShader" +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 "Release" +msgstr "" + +#: editor/project_export.cpp +msgid "Exporting All" +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 "Export Path" +msgstr "" + +#: editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: editor/project_export.cpp +msgid "Export all resources in the project" +msgstr "" + +#: editor/project_export.cpp +msgid "Export selected scenes (and dependencies)" +msgstr "" + +#: editor/project_export.cpp +msgid "Export selected resources (and dependencies)" +msgstr "" + +#: editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: editor/project_export.cpp +msgid "Resources to export:" +msgstr "" + +#: editor/project_export.cpp +msgid "" +"Filters to export non-resource files (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 "Script" +msgstr "" + +#: editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: editor/project_export.cpp +msgid "Text" +msgstr "" + +#: editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: editor/project_export.cpp +msgid "Invalid Encryption Key (must be 64 characters long)" +msgstr "" + +#: editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: editor/project_export.cpp +msgid "Export mode?" +msgstr "" + +#: editor/project_export.cpp +msgid "Export All" +msgstr "" + +#: editor/project_export.cpp +msgid "Export templates for this platform are missing:" +msgstr "" + +#: editor/project_export.cpp +msgid "Export With Debug" +msgstr "" + +#: editor/project_manager.cpp +msgid "The path does not exist." +msgstr "" + +#: editor/project_manager.cpp +msgid "Invalid '.zip' project file, does not contain a 'project.godot' file." +msgstr "" + +#: editor/project_manager.cpp +msgid "Please choose an empty folder." +msgstr "" + +#: editor/project_manager.cpp +msgid "Please choose a 'project.godot' or '.zip' file." +msgstr "" + +#: editor/project_manager.cpp +msgid "Directory already contains a Godot project." +msgstr "" + +#: editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Invalid Project Name." +msgstr "" + +#: editor/project_manager.cpp +msgid "Couldn't create folder." +msgstr "" + +#: editor/project_manager.cpp +msgid "There is already a folder in this path with the specified name." +msgstr "" + +#: editor/project_manager.cpp +msgid "It would be a good idea to name your project." +msgstr "" + +#: editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Couldn't load project.godot in project path (error %d). It may be missing or " +"corrupted." +msgstr "" + +#: editor/project_manager.cpp +msgid "Couldn't edit project.godot in project path." +msgstr "" + +#: editor/project_manager.cpp +msgid "Couldn't create project.godot in project path." +msgstr "" + +#: editor/project_manager.cpp +msgid "The following files failed extraction from package:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Rename Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "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 "Project Installation Path:" +msgstr "" + +#: editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: editor/project_manager.cpp +msgid "Can't open project at '%s'." +msgstr "" + +#: editor/project_manager.cpp +msgid "Are you sure to open more than one project?" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"The following project settings file was generated by an older engine " +"version, and needs to be converted for this version:\n" +"\n" +"%s\n" +"\n" +"Do you want to convert it?\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"The project settings were created by a newer engine version, whose settings " +"are not compatible with this version." +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Can't run project: no main scene defined.\n" +"Please edit the project and set the main scene in \"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 name. it cannot be empty nor contain '/', ':', '=', '\\' 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 "Change Action deadzone" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "All Devices" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Device" +msgstr "" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "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 "Wheel Left Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Right Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "X Button 1" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "X Button 2" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joypad Axis Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Axis" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Joypad Button Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Erase Input Action" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Event" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Button" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Left Button." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Right Button." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Middle Button." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Up." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Wheel Down." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Add Global Property" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Select a setting item first!" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "No property '%s' exists." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Setting '%s' is internal, and it can't be deleted." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Delete Item" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "" +"Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " +"'\"'." +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "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 +msgid "Override For..." +msgstr "" + +#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp +msgid "Editor must be restarted for changes to take effect" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Input Map" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Action:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Action" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Deadzone" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Device:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Index:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Localization" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Translations" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Translations:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remaps" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Resources:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Locale" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Locales Filter" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Show all locales" +msgstr "" + +#: editor/project_settings_editor.cpp +msgid "Show 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 "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 "Error loading file: Not a resource!" +msgstr "" + +#: editor/property_editor.cpp +msgid "Pick a Node" +msgstr "" + +#: editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Property" +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Virtual Method" +msgstr "" + +#: editor/property_selector.cpp +msgid "Select Method" +msgstr "" + +#: editor/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/rename_dialog.cpp editor/scene_tree_dock.cpp +msgid "Batch Rename" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Prefix" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Suffix" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Advanced options" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Substitute" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node's parent name, if available" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Node type" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Current scene name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Root node name" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "" +"Sequential integer counter.\n" +"Compare counter options." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Per Level counter" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "If set the counter restarts for each group of child nodes" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Initial value for the counter" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Step" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Amount by which counter is incremented for each node" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Padding" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "" +"Minimum number of digits for the counter.\n" +"Missing digits are padded with leading zeros." +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Regular Expressions" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Post-Process" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Keep" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "CamelCase to under_scored" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "under_scored to CamelCase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Case" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "To Lowercase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "To Uppercase" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Reset" +msgstr "" + +#: editor/rename_dialog.cpp +msgid "Error" +msgstr "" + +#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "No parent to instance the scenes at." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can not perform with the root node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Save New Scene As..." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Disabling \"editable_instance\" will cause all properties of the node to be " +"reverted to their default." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Editable Children" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Load As Placeholder" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make Local" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Create Root Node:" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "2D Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "3D Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "User Interface" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Custom Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Attach Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Sub-Resources" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear Inheritance" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Open documentation" +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 "Change Type" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Extend Script" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Make Scene Root" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp editor/script_editor_debugger.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Copy Node Path" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Delete (No Confirm)" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Attach a new or existing script for the selected node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear a script for the selected node." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Remote" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Local" +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle Visible" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "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 editor/script_create_dialog.cpp +msgid "Open Script" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Node is locked.\n" +"Click to unlock it." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"Children are not selectable.\n" +"Click to make selectable." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Toggle Visibility" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "" +"AnimationPlayer is pinned.\n" +"Click to unpin." +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Node Configuration Warning!" +msgstr "" + +#: editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "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 "Open Script/Choose Location" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Filename is empty" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: editor/script_create_dialog.cpp +msgid "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 "Stack Trace" +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 "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 Notifier AABB" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Particles AABB" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Probe Extents" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Cylinder Shape Radius" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Cylinder Shape Height" +msgstr "" + +#: editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Cylinder Radius" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Cylinder Height" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Torus Inner Radius" +msgstr "" + +#: modules/csg/csg_gizmos.cpp +msgid "Change Torus Outer Radius" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Select the dynamic library for this entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Select dependencies of the library for this entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Remove current entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Double click to create a new entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Platform:" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Platform" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Dynamic Library" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "Add an architecture entry" +msgstr "" + +#: modules/gdnative/gdnative_library_editor_plugin.cpp +msgid "GDNativeLibrary" +msgstr "" + +#: modules/gdnative/gdnative_library_singleton_editor.cpp +msgid "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 +msgid "Step argument is zero!" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: modules/gdscript/gdscript_functions.cpp +msgid "Object can't provide a length." +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Next Plane" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Previous Plane" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Plane:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Next Floor" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Previous Floor" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Floor:" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Delete Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Fill Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Duplicate Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Grid Map" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Snap View" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Disabled" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Above" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Clip Below" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit X Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit Y Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Edit Z Axis" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate X" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate Y" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Rotate Z" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate X" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate Y" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Back Rotate Z" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Cursor Clear Rotation" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "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 "Fill Selection" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "GridMap Settings" +msgstr "" + +#: modules/gridmap/grid_map_editor_plugin.cpp +msgid "Pick Distance:" +msgstr "" + +#: modules/mono/csharp_script.cpp +msgid "Class name can't be a reserved keyword" +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 "About C# support" +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 "View log" +msgstr "" + +#: modules/mono/mono_gd/gd_mono_utils.cpp +msgid "End of inner exception stack trace" +msgstr "" + +#: modules/recast/navigation_mesh_editor_plugin.cpp +msgid "Bake NavMesh" +msgstr "" + +#: modules/recast/navigation_mesh_editor_plugin.cpp +msgid "Clear the navigation mesh." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Setting up Configuration..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Calculating grid size..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Creating heightfield..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Marking walkable triangles..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Constructing compact heightfield..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Eroding walkable area..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Partitioning..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Creating contours..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Creating polymesh..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Converting to native navigation mesh..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Navigation Mesh Generator Setup:" +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Parsing Geometry..." +msgstr "" + +#: modules/recast/navigation_mesh_generator.cpp +msgid "Done!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"A node yielded without working memory, please read the docs on how to yield " +"properly!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Node yielded, but did not return a function state in the first working " +"memory." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "" +"Return value must be assigned to first element of node working memory! Fix " +"your node please." +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Node returned an invalid sequence output: " +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Found sequence bit but not the node in the stack, report bug!" +msgstr "" + +#: modules/visual_script/visual_script.cpp +msgid "Stack overflow with stack depth: " +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Signal Arguments" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Argument Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Argument name" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Set Variable Default Value" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Set Variable Type" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "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 "Connect Node Data" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Connect Node Sequence" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Script already has function '%s'" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Change Input Value" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "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 "Remove Variable" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Variable:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Remove Signal" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Editing Signal:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Base Type:" +msgstr "" + +#: modules/visual_script/visual_script_editor.cpp +msgid "Members:" +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_editor.cpp +msgid "Edit Member" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Input type not iterable: " +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid" +msgstr "" + +#: modules/visual_script/visual_script_flow_control.cpp +msgid "Iterator became invalid: " +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name." +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Base object is not a Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Path does not lead Node!" +msgstr "" + +#: modules/visual_script/visual_script_func_nodes.cpp +msgid "Invalid index property name '%s' in node %s." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid argument of type: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid ": Invalid arguments: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableGet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "VariableSet not found in script: " +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "Custom node has no _step() method, can't process graph." +msgstr "" + +#: modules/visual_script/visual_script_nodes.cpp +msgid "" +"Invalid return value from _step(), must be integer (seq out), or string " +"(error)." +msgstr "" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Search VisualScript" +msgstr "" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Get %s" +msgstr "" + +#: modules/visual_script/visual_script_property_selector.cpp +msgid "Set %s" +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Run in Browser" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Run exported HTML in the system's default browser." +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not write file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not open template for export:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Invalid export template:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not read custom HTML shell:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Could not read boot splash image file:" +msgstr "" + +#: platform/javascript/export/export.cpp +msgid "Using default boot splash image." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" + +#: scene/2d/collision_object_2d.cpp +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape2D or CollisionPolygon2D as a child to " +"define its shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/2d/cpu_particles_2d.cpp +msgid "" +"CPUParticles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + +#: scene/2d/particles_2d.cpp scene/3d/particles.cpp +msgid "" +"A material to process the particles is not assigned, so no behavior is " +"imprinted." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "" +"Particles2D animation requires the usage of a CanvasItemMaterial with " +"\"Particles Animation\" enabled." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/physics_body_2d.cpp +msgid "" +"Size changes to RigidBody2D (in character or rigid modes) will be overridden " +"by the physics engine when running.\n" +"Change the size in children collision shapes instead." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "This Bone2D chain should end at a Skeleton2D node." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "A Bone2D only works with a Skeleton2D or another Bone2D as parent node." +msgstr "" + +#: scene/2d/skeleton_2d.cpp +msgid "" +"This bone lacks a proper REST pose. Go to the Skeleton2D node and set one." +msgstr "" + +#: scene/2d/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 "%d%%" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "(Time Left: %d:%02d s)" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Plotting Meshes: " +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Plotting Lights:" +msgstr "" + +#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp +msgid "Finishing Plot" +msgstr "" + +#: scene/3d/baked_lightmap.cpp +msgid "Lighting Meshes: " +msgstr "" + +#: scene/3d/collision_object.cpp +msgid "" +"This node has no shape, so it can't collide or interact with other objects.\n" +"Consider adding a CollisionShape or CollisionPolygon as a child to define " +"its shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/3d/cpu_particles.cpp +msgid "Nothing is visible because no mesh has been assigned." +msgstr "" + +#: scene/3d/cpu_particles.cpp +msgid "" +"CPUParticles animation requires the usage of a SpatialMaterial with " +"\"Billboard Particles\" enabled." +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 "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"Nothing is visible because meshes have not been assigned to draw passes." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" +"Particles animation requires the usage of a SpatialMaterial with \"Billboard " +"Particles\" enabled." +msgstr "" + +#: scene/3d/path.cpp +msgid "PathFollow only works when set as a child of a Path node." +msgstr "" + +#: scene/3d/path.cpp +msgid "" +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." +msgstr "" + +#: scene/3d/physics_body.cpp +msgid "" +"Size changes to RigidBody (in character or rigid modes) will be overridden " +"by the physics engine when running.\n" +"Change the size in children collision shapes instead." +msgstr "" + +#: scene/3d/remote_transform.cpp +msgid "Path property must point to a valid Spatial node to work." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "WorldEnvironment needs an Environment resource." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"This WorldEnvironment is ignored. Either add a Camera (for 3D scenes) or set " +"this environment's Background Mode to Canvas (for 2D scenes)." +msgstr "" + +#: scene/3d/soft_body.cpp +msgid "This body will be ignored until you set a mesh" +msgstr "" + +#: scene/3d/soft_body.cpp +msgid "" +"Size changes to SoftBody will be overridden by the physics engine when " +"running.\n" +"Change the size in children collision shapes instead." +msgstr "" + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/3d/vehicle_body.cpp +msgid "" +"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use " +"it as a child of a VehicleBody." +msgstr "" + +#: scene/animation/animation_blend_tree.cpp +msgid "On BlendTree node '%s', animation not found: '%s'" +msgstr "" + +#: scene/animation/animation_blend_tree.cpp +msgid "Animation not found: '%s'" +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "In node '%s', invalid animation: '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Invalid animation: '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Nothing connected to input '%s' of node '%s'." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "A root AnimationNode for the graph is not set." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Path to an AnimationPlayer node containing animations is not set." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "Path set for AnimationPlayer does not lead to an AnimationPlayer node." +msgstr "" + +#: scene/animation/animation_tree.cpp +msgid "AnimationPlayer root is not a valid node." +msgstr "" + +#: scene/animation/animation_tree_player.cpp +msgid "This node has been deprecated. Use AnimationTree instead." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Raw Mode" +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp +msgid "Add current color as a preset" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" + +#: scene/gui/range.cpp +msgid "If exp_edit is true min_value must be > 0." +msgstr "" + +#: scene/gui/scroll_container.cpp +msgid "" +"ScrollContainer is intended to work with a single child control.\n" +"Use a container as child (VBox,HBox,etc), or a Control and set the custom " +"minimum size manually." +msgstr "" + +#: scene/gui/tree.cpp +msgid "(Other)" +msgstr "" + +#: scene/main/scene_tree.cpp +msgid "" +"Default Environment as specified in Project Settings (Rendering -> " +"Environment -> Default Environment) could not be loaded." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/resources/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 "" + +#: scene/resources/visual_shader.cpp +msgid "Input" +msgstr "" + +#: scene/resources/visual_shader_nodes.cpp +msgid "Invalid source for shader." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Assignment to function." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Assignment to uniform." +msgstr "" + +#: servers/visual/shader_language.cpp +msgid "Varyings can only be assigned in vertex function." +msgstr "" diff --git a/editor/translations/th.po b/editor/translations/th.po index 4a7cc010a3..c50ab36025 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -567,23 +567,13 @@ msgstr "ย่à¸" msgid "Reset Zoom" msgstr "รีเซ็ตซูม" -#: editor/code_editor.cpp -#, fuzzy -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "คำเตืà¸à¸™" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "ขนาดฟà¸à¸™à¸•์ต้นฉบับ:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "บรรทัด:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "คà¸à¸¥à¸±à¸¡à¸™à¹Œ:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -890,8 +880,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "ลบ" @@ -1312,9 +1302,30 @@ msgid "Storing File:" msgstr "เà¸à¹‡à¸šà¹„ฟล์:" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "" +"ไม่มีà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¸³à¸«à¸£à¸±à¸šà¸ªà¹ˆà¸‡à¸à¸à¸\n" +"ดาวน์โหลดà¹à¸¥à¸°à¸•ิดตั้งà¹à¸¡à¹ˆà¹à¸šà¸š" + +#: editor/editor_export.cpp msgid "Packing" msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸šà¸£à¸§à¸¡" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "ไม่พบà¹à¸žà¸„เà¸à¸ˆà¸”ีบัคที่à¸à¸³à¸«à¸™à¸”" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "ไม่พบà¹à¸žà¸„เà¸à¸ˆà¸ˆà¸³à¸«à¸™à¹ˆà¸²à¸¢à¸—ี่à¸à¸³à¸«à¸™à¸”" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸š:" @@ -3334,6 +3345,19 @@ msgstr "à¹à¸šà¸š..." msgid "Reimport" msgstr "นำเข้าใหม่" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "โหลดรีซà¸à¸£à¹Œà¸ªà¹„ม่ได้" @@ -4325,6 +4349,16 @@ msgid "Move CanvasItem" msgstr "à¹à¸à¹‰à¹„ข CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "ปรับหมุดเท่านั้น" @@ -6382,7 +6416,7 @@ msgid "Post" msgstr "หลัง" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6465,7 +6499,13 @@ msgid "(empty)" msgstr "(ว่างเปล่า)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "à¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" msgstr "à¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6477,7 +6517,8 @@ msgid "Loop" msgstr "วน" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "เฟรมà¹à¸à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7268,6 +7309,38 @@ msgid "Browse" msgstr "เลืà¸à¸" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "โปรเจà¸à¸•์ไม่มีชื่à¸" @@ -7282,6 +7355,19 @@ msgstr "ยืนยันà¸à¸²à¸£à¹€à¸›à¸´à¸”โปรเจà¸à¸•์มาภ#: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7987,6 +8073,18 @@ msgid "Duplicate Node(s)" msgstr "ทำซ้ำโหนด" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "ลบโหนด?" @@ -8810,10 +8908,6 @@ msgid "Build Project" msgstr "Build โปรเจà¸à¸•์" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "คำเตืà¸à¸™" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "ดูไฟล์" @@ -9207,6 +9301,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "ชื่à¸à¸„ลาสไม่ถูà¸à¸•้à¸à¸‡" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "ไม่สามารถใช้ชื่à¸à¸™à¸µà¹‰à¹„ด้:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "ไม่สามารถใช้ชื่à¸à¸™à¸µà¹‰à¹„ด้:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "รันในเบราเซà¸à¸£à¹Œ" @@ -9239,6 +9417,51 @@ msgstr "ไม่สามารถà¸à¹ˆà¸²à¸™à¹„ฟล์ภาพขณะเ msgid "Using default boot splash image." msgstr "ใช้ภาพขณะเริ่มเà¸à¸¡à¸›à¸£à¸´à¸¢à¸²à¸¢" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "ชื่à¸à¹€à¸‰à¸žà¸²à¸°à¹„ม่ถูà¸à¸•้à¸à¸‡" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "GUID ขà¸à¸‡à¹‚ปรà¹à¸à¸£à¸¡à¹„ม่ถูà¸à¸•้à¸à¸‡" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "GUID ขà¸à¸‡à¸œà¸¹à¹‰à¸ˆà¸±à¸”จำหน่ายไม่ถูà¸à¸•้à¸à¸‡" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "สีพื้นหลังผิดพลาด" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "ขนาดรูปโลโà¸à¹‰ Store ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 50x50)" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 44x44 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 44x44)" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 71x71 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 71x71)" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 150x150 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 150x150)" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 310x310 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 310x310)" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "ขนาดโลโà¸à¹‰à¸à¸§à¹‰à¸²à¸‡ 310x150 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 310x150)" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "ขนาดรูปหน้าจà¸à¹€à¸£à¸´à¹ˆà¸¡à¹‚ปรà¹à¸à¸£à¸¡à¸œà¸´à¸”พลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 620x300)" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9334,6 +9557,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "ParallaxLayer จะทำงานได้ต้à¸à¸‡à¹€à¸›à¹‡à¸™à¹‚หนดลูà¸à¸‚à¸à¸‡à¹‚หนด ParallaxBackground" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9501,6 +9731,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "ไม่มีà¸à¸²à¸£à¹à¸ªà¸”งผลเนื่à¸à¸‡à¸ˆà¸²à¸à¹„ม่ได้à¸à¸³à¸«à¸™à¸” mesh ใน draw pass" @@ -9516,14 +9753,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow2D จะทำงานได้ต้à¸à¸‡à¹€à¸›à¹‡à¸™à¹‚หนดลูà¸à¸‚à¸à¸‡à¹‚หนด Path2D" #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "PathFollow2D จะทำงานได้ต้à¸à¸‡à¹€à¸›à¹‡à¸™à¹‚หนดลูà¸à¸‚à¸à¸‡à¹‚หนด Path2D" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9626,10 +9858,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "โหมด Raw" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "เพิ่มสีที่เลืà¸à¸à¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£à¹‚ปรด" @@ -9726,6 +9966,24 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Warnings:" +#~ msgstr "คำเตืà¸à¸™" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "ขนาดฟà¸à¸™à¸•์ต้นฉบับ:" + +#~ msgid "Line:" +#~ msgstr "บรรทัด:" + +#~ msgid "Col:" +#~ msgstr "คà¸à¸¥à¸±à¸¡à¸™à¹Œ:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "PathFollow2D จะทำงานได้ต้à¸à¸‡à¹€à¸›à¹‡à¸™à¹‚หนดลูà¸à¸‚à¸à¸‡à¹‚หนด Path2D" + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "มีà¸à¸²à¸£à¸à¸£à¸°à¸—ำ '%s' à¸à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§!" @@ -10933,52 +11191,6 @@ msgstr "" #~ msgid "Error creating the package signature." #~ msgstr "ผิดพลาดขณะสร้าง signature ขà¸à¸‡à¹à¸žà¸„เà¸à¸ˆ" -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "ไม่มีà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¸³à¸«à¸£à¸±à¸šà¸ªà¹ˆà¸‡à¸à¸à¸\n" -#~ "ดาวน์โหลดà¹à¸¥à¸°à¸•ิดตั้งà¹à¸¡à¹ˆà¹à¸šà¸š" - -#~ msgid "Custom debug package not found." -#~ msgstr "ไม่พบà¹à¸žà¸„เà¸à¸ˆà¸”ีบัคที่à¸à¸³à¸«à¸™à¸”" - -#~ msgid "Custom release package not found." -#~ msgstr "ไม่พบà¹à¸žà¸„เà¸à¸ˆà¸ˆà¸³à¸«à¸™à¹ˆà¸²à¸¢à¸—ี่à¸à¸³à¸«à¸™à¸”" - -#~ msgid "Invalid unique name." -#~ msgstr "ชื่à¸à¹€à¸‰à¸žà¸²à¸°à¹„ม่ถูà¸à¸•้à¸à¸‡" - -#~ msgid "Invalid product GUID." -#~ msgstr "GUID ขà¸à¸‡à¹‚ปรà¹à¸à¸£à¸¡à¹„ม่ถูà¸à¸•้à¸à¸‡" - -#~ msgid "Invalid publisher GUID." -#~ msgstr "GUID ขà¸à¸‡à¸œà¸¹à¹‰à¸ˆà¸±à¸”จำหน่ายไม่ถูà¸à¸•้à¸à¸‡" - -#~ msgid "Invalid background color." -#~ msgstr "สีพื้นหลังผิดพลาด" - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "ขนาดรูปโลโà¸à¹‰ Store ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 50x50)" - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 44x44 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 44x44)" - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 71x71 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 71x71)" - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 150x150 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 150x150)" - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 310x310 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 310x310)" - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "ขนาดโลโà¸à¹‰à¸à¸§à¹‰à¸²à¸‡ 310x150 ผิดพลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 310x150)" - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "ขนาดรูปหน้าจà¸à¹€à¸£à¸´à¹ˆà¸¡à¹‚ปรà¹à¸à¸£à¸¡à¸œà¸´à¸”พลาด (ต้à¸à¸‡à¹€à¸›à¹‡à¸™ 620x300)" - #~ msgid "RAW Mode" #~ msgstr "โหมด Raw" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 45904886f7..9f4f6bcfde 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -19,12 +19,13 @@ # Yavuz Günay <yavuzgunay@gmail.com>, 2017. # Onur Sanır <onursanir@gmail.com>, 2018. # OÄŸuzhan Özdemir <ozdemiroguzhan0@gmail.com>, 2018. +# Alper Çitmen <alper.citmen@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:43+0100\n" -"Last-Translator: OÄŸuzhan Özdemir <ozdemiroguzhan0@gmail.com>\n" +"PO-Revision-Date: 2019-01-19 19:22+0000\n" +"Last-Translator: Alper Çitmen <alper.citmen@gmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" "Language: tr\n" @@ -32,7 +33,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Poedit 2.2\n" +"X-Generator: Weblate 3.4-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -53,6 +54,7 @@ msgstr "" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" msgstr "" +"\"self\" ifadesi kullanılamaz çünkü örnekleme \"null\" yani tanımlanmadı." #: core/math/expression.cpp #, fuzzy @@ -580,23 +582,13 @@ msgstr "UzaklaÅŸtır" msgid "Reset Zoom" msgstr "YaklaÅŸmayı Sıfırla" -#: editor/code_editor.cpp -#, fuzzy -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "Uyarılar" #: editor/code_editor.cpp -#, fuzzy -msgid "Font Size:" -msgstr "Kaynak Yazı Türü Boyutu:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Satır:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "Sütun:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -905,8 +897,8 @@ msgstr "Seçili dosyalar silinsin mi?" #: 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Sil" @@ -1328,9 +1320,30 @@ msgid "Storing File:" msgstr "Dosya Depolama:" #: editor/editor_export.cpp +#, fuzzy +msgid "No export template found at the expected path:" +msgstr "" +"Hiçbir dışa aktarım kalıbı bulunamadı.\n" +"Dışa aktarım kalıplarını indirin ve yükleyin..." + +#: editor/editor_export.cpp msgid "Packing" msgstr "Çıkınla" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "Özel kusur ayıklama çıkını bulunmadı." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom release template not found." +msgstr "Özel yayınlama çıkını bulunamadı." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Åžablon dosyası bulunamadı:" @@ -3393,6 +3406,19 @@ msgstr "Ön ayar..." msgid "Reimport" msgstr "Yeniden İçe Aktar" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Kaynak yükleme baÅŸarısız oldu." @@ -4388,6 +4414,16 @@ msgid "Move CanvasItem" msgstr "CanvasItem Düzenle" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Sadece çapalar" @@ -6445,7 +6481,7 @@ msgid "Post" msgstr "Sonrası" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6528,10 +6564,16 @@ msgid "(empty)" msgstr "(boÅŸ)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Animasyonlar" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Animasyon" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "Hız (FPS):" @@ -6540,7 +6582,8 @@ msgid "Loop" msgstr "Döngü" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Animasyon Çerçeveleri" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7332,6 +7375,38 @@ msgid "Browse" msgstr "Gözat" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Adsız Proje" @@ -7346,6 +7421,19 @@ msgstr "Birden fazla proje açmakta kararlı mısınız?" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8059,6 +8147,18 @@ msgid "Duplicate Node(s)" msgstr "Düğüm(leri) ÇoÄŸalt" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Düğüm(ler) Silinsin mi?" @@ -8884,10 +8984,6 @@ msgid "Build Project" msgstr "Projeyi İnÅŸa et" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "Uyarılar" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "Dosyaları Görüntüle" @@ -9292,6 +9388,90 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "Geçersiz sınıf ismi" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "Ad doÄŸru bir belirleyici deÄŸil:" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "Ad doÄŸru bir belirleyici deÄŸil:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Tarayıcıda Çalıştır" @@ -9324,6 +9504,51 @@ msgstr "Açılış ekranı resim dosyası okunamadı:" msgid "Using default boot splash image." msgstr "Açılış ekranı resim dosyası okunamadı." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "Benzersiz Ad Geçersiz." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "Geçersiz ürün GUID'i." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "Geçersiz yayıncı GUID'i." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Geçersiz arkaplan rengi." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Geçersiz Yığım Belirtkesi, bedizin boyutları (50x50 olmalı)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "Geçersiz kare 44x44 belirtkenin bediz boyutları (44x44 olmalı)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "Geçersiz kare 71x71 belirtkenin bediz boyutları (71x71 olmalı)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "Geçersiz kare 150x150 belirtkenin bediz boyutları (150x150 olmalı)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "Geçersiz kare 310x310 belirtkenin bediz boyutları (310x310 olmalı)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "Geçersiz kare 310x150 belirtkenin bediz boyutları (310x150 olmalı)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Geçersiz açılış görüntülüğü bediz boyutları (620x300 olmalı)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9433,6 +9658,13 @@ msgstr "" "ParallaxLayer, yalnızca ParallaxBackground düğümünün çocuÄŸu olduÄŸu zaman " "çalışır." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9619,6 +9851,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "HiçbirÅŸey görünebilir deÄŸil çünkü örüntüler çizim geçiÅŸlerine atanmış deÄŸil." @@ -9636,15 +9875,9 @@ msgstr "" "PathFollow2D yalnızca Path2D düğümünün çocuÄŸu olarak ayarlanınca çalışır." #: scene/3d/path.cpp -#, fuzzy -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"PathFollow2D yalnızca Path2D düğümünün çocuÄŸu olarak ayarlanınca çalışır." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9760,10 +9993,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Ham Kip" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Åžuanki rengi bir önayar olarak kaydet" @@ -9862,6 +10103,25 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Warnings:" +#~ msgstr "Uyarılar" + +#, fuzzy +#~ msgid "Font Size:" +#~ msgstr "Kaynak Yazı Türü Boyutu:" + +#~ msgid "Line:" +#~ msgstr "Satır:" + +#~ msgid "Col:" +#~ msgstr "Sütun:" + +#, fuzzy +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "PathFollow2D yalnızca Path2D düğümünün çocuÄŸu olarak ayarlanınca çalışır." + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "İşlem '%s' zaten var!" @@ -11080,52 +11340,6 @@ msgstr "" #~ msgid "Error creating the package signature." #~ msgstr "Çıkın imzasını oluÅŸturmada sorun." -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "Hiçbir dışa aktarım kalıbı bulunamadı.\n" -#~ "Dışa aktarım kalıplarını indirin ve yükleyin..." - -#~ msgid "Custom debug package not found." -#~ msgstr "Özel kusur ayıklama çıkını bulunmadı." - -#~ msgid "Custom release package not found." -#~ msgstr "Özel yayınlama çıkını bulunamadı." - -#~ msgid "Invalid unique name." -#~ msgstr "Benzersiz Ad Geçersiz." - -#~ msgid "Invalid product GUID." -#~ msgstr "Geçersiz ürün GUID'i." - -#~ msgid "Invalid publisher GUID." -#~ msgstr "Geçersiz yayıncı GUID'i." - -#~ msgid "Invalid background color." -#~ msgstr "Geçersiz arkaplan rengi." - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "Geçersiz Yığım Belirtkesi, bedizin boyutları (50x50 olmalı)." - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "Geçersiz kare 44x44 belirtkenin bediz boyutları (44x44 olmalı)." - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "Geçersiz kare 71x71 belirtkenin bediz boyutları (71x71 olmalı)." - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "Geçersiz kare 150x150 belirtkenin bediz boyutları (150x150 olmalı)." - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "Geçersiz kare 310x310 belirtkenin bediz boyutları (310x310 olmalı)." - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "Geçersiz kare 310x150 belirtkenin bediz boyutları (310x150 olmalı)." - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "Geçersiz açılış görüntülüğü bediz boyutları (620x300 olmalı)." - #, fuzzy #~ msgid "RAW Mode" #~ msgstr "Çalışma Biçimi:" diff --git a/editor/translations/uk.po b/editor/translations/uk.po index ca8452b9f4..9fb767a773 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Ukrainian (Godot Engine)\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2019-01-13 15:07+0000\n" +"PO-Revision-Date: 2019-02-01 12:10+0000\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/" "godot/uk/>\n" @@ -25,7 +25,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -552,21 +552,13 @@ msgstr "ЗменшеннÑ" msgid "Reset Zoom" msgstr "Скинути маÑштаб" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "ПопередженнÑ:" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "Розмір шрифту:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Ð Ñдок:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "ПопередженнÑ" #: editor/code_editor.cpp -msgid "Col:" -msgstr "Колонка:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -868,8 +860,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Вилучити" @@ -1294,9 +1286,25 @@ msgid "Storing File:" msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "У очікуваному каталозі не знайдено шаблонів екÑпортуваннÑ:" + +#: editor/editor_export.cpp msgid "Packing" msgstr "ПакуваннÑ" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "Ðетипового шаблону діагноÑтики не знайдено." + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "Ðетипового шаблону випуÑку не знайдено." + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "Файл шаблону не знайдено:" @@ -2595,9 +2603,8 @@ msgid "Assign..." msgstr "Призначити…" #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" -msgstr "Ðеправильний шлÑÑ…" +msgstr "Ðекоректний RID" #: editor/editor_properties.cpp msgid "" @@ -3309,6 +3316,21 @@ msgstr "Заздалегідь уÑтановлений..." msgid "Reimport" msgstr "Переімпортувати" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "Зберегти Ñцени, повторно імпортувати Ñ– перезапуÑтити" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "Зміна типу імпортованого файла потребує перезапуÑку редактора." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" +"Увага: Ñ–Ñують об'єкти, Ñкі викориÑтовують цей реÑурÑ, — вони можуть " +"припинити завантажуватиÑÑ Ð½Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¼ чином." + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑурÑ." @@ -4275,6 +4297,19 @@ msgid "Move CanvasItem" msgstr "ПереÑунути CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" +"ПопередженнÑ: дані щодо Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° розміру дочірніх об'єктів " +"визначаютьÑÑ Ð»Ð¸ÑˆÐµ їхнім батьківÑьким об'єктом." + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "Тільки прив'Ñзки" @@ -5186,28 +5221,24 @@ msgid "Create Polygon & UV" msgstr "Створити полігон Ñ– UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "Створити нову горизонтальну напрÑмну" +msgstr "Створити внутрішню вершину" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Internal Vertex" -msgstr "Вилучити вхідну керувальну точку" +msgstr "Вилучити внутрішню вершину" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "Ðекоректний полігон (повинен мати 3 різні вершини)" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "Редагувати полігон" +msgstr "Додати нетиповий полігон" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Remove Custom Polygon" -msgstr "Вилучити полігон зіткненнÑ" +msgstr "Вилучити нетиповий полігон" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Transform UV Map" @@ -5234,14 +5265,12 @@ msgid "UV" msgstr "UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Points" -msgstr "Точка" +msgstr "Точки" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "Полігон -> UV" +msgstr "Полігони" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -5278,12 +5307,15 @@ msgstr "МаÑштабувати полігон" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." msgstr "" +"Створити нетиповий полігон. Вмикає обробку нетипових полігонів Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." msgstr "" +"Вилучити нетиповий полігон. Якщо нетипових полігонів не лишитьÑÑ, обробку " +"нетипових полігонів Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ буде вимкнено." #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -6274,7 +6306,8 @@ msgid "Post" msgstr "ПіÑлÑ" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +#, fuzzy +msgid "Nameless gizmo" msgstr "Штука без назви" #: editor/plugins/sprite_editor_plugin.cpp @@ -6352,10 +6385,16 @@ msgid "(empty)" msgstr "(порожньо)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" msgstr "Ðнімації" #: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "ÐнімаціÑ" + +#: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" msgstr "ЧаÑтота (кадри за Ñек.):" @@ -6364,7 +6403,8 @@ msgid "Loop" msgstr "Зациклити" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "Кадри анімації" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7121,6 +7161,48 @@ msgid "Browse" msgstr "Вибрати" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "Обробник:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"ВиÑока ÑкіÑть зображеннÑ\n" +"ДоÑтупні уÑÑ– можливоÑті\n" +"ÐеÑуміÑний із заÑтарілим обладнаннÑм\n" +"Ðе рекомендовано Ð´Ð»Ñ Ñ–Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚-ігор" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "OpenGL ES 2.0" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"Ðижча ÑкіÑть зображеннÑ\n" +"ДеÑкі можливоÑті Ñ” недоÑтупними\n" +"Працює майже вÑюди\n" +"Рекомендовано Ð´Ð»Ñ Ñ–Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚-ігор" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" +"Обробник можна змінити пізніше, але, можливо, виникне потреба у коригуванні " +"Ñцен." + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "Проект без назви" @@ -7133,6 +7215,28 @@ msgid "Are you sure to open more than one project?" msgstr "Ви Ñправді хочете відкрити декілька проектів одразу?" #: editor/project_manager.cpp +#, fuzzy +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"Вказаний нижче файл параметрів проекту було Ñтворено у заÑтарілій верÑÑ–Ñ— " +"рушіÑ. Його доведетьÑÑ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ до поточної верÑÑ–Ñ—:\n" +"\n" +"%s\n" +"\n" +"Хочете виконати таке перетвореннÑ?\n" +"ПопередженнÑ: у результаті Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸ втратите можливіÑть Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ " +"проекту у заÑтарілих верÑÑ–ÑÑ… рушіÑ." + +#: editor/project_manager.cpp msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -7847,6 +7951,20 @@ msgid "Duplicate Node(s)" msgstr "Дублювати вузли" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" +"Ðе можна змінювати батьківÑький об'єкт вузлів в уÑпадкованих Ñценах — " +"порÑдок вузлів не можна змінювати." + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "Щоб Ñтати кореневим, вузол має належати редагованій Ñцені." + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "Сцени зі Ñтвореними екземплÑрами не можуть Ñтавати кореневими" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Вилучити вузли?" @@ -8653,10 +8771,6 @@ msgid "Build Project" msgstr "Зібрати проект" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "ПопередженнÑ" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "ПереглÑнути журнал" @@ -9056,6 +9170,95 @@ msgstr "Отримати %s" msgid "Set %s" msgstr "Ð’Ñтановити %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "Ðе вказано назви пакунка." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "Сегменти пакунка повинні мати ненульову довжину." + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" +"Ðе можна викориÑтовувати у назві пакунка програми на Android Ñимволи «%s»." + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "Цифра не може бути першим Ñимволом у Ñегменті пакунка." + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" +"Ðе можна викориÑтовувати Ñимвол «%s» Ñк перший Ñимвол назви Ñегмента пакунка." + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "У назві пакунка має бути принаймні один роздільник «.»." + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "У параметрах редактора не налаштовано виконуваного файла ADB." + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "У параметрах редактора не налаштовано jarsigner з OpenJDK." + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" +"ÐÑ– у параметрах редактора, ні у шаблоні не налаштовано діагноÑтичне Ñховище " +"ключів." + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "Ðеокректний відкритий ключ Ð´Ð»Ñ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ APK." + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "Ðекоректна назва пакунка:" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "Ðе вказано ідентифікатор." + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "Сегменти ідентифікатора повинні мати ненульову довжину." + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "У назві ідентифікатора не можна викориÑтовувати Ñимволи «%s»." + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" +"Ðе можна викориÑтовувати цифри Ñк перші Ñимволи Ñегмента ідентифікатора." + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" +"Ðе можна викориÑтовувати Ñимвол «%s» Ñк перший Ñимвол Ñегмента " +"ідентифікатора." + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "У ідентифікаторі має бути принаймні один роздільник «.»." + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" +"Ðе вказано ідентифікатор команди App Store — проект неможливо налаштувати." + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "Ðекоректний ідентифікатор:" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "У шаблоні не вказано потрібної піктограми." + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "ЗапуÑтити в браузері" @@ -9088,6 +9291,60 @@ msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ файл Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð msgid "Using default boot splash image." msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð³Ð¾ файлу Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки." +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "Ðекоректна унікальна назва пакунка." + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "Ðекоректний GUID продукту." + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "Ðекоректний GUID видавцÑ." + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "Ðекоректний колір тла." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð»Ð¾Ð³Ð¾Ñ‚Ð¸Ð¿Ñƒ Store (мають бути 50x50)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" +"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð¾Ð³Ð¾ логотипу 44x44 (мають бути " +"44x44)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" +"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð¾Ð³Ð¾ логотипу 71x71 (мають бути " +"71x71)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" +"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð¾Ð³Ð¾ логотипу 150x150 (мають бути " +"150x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" +"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð¾Ð³Ð¾ логотипу 310x310 (мають бути " +"310x310)." + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" +"Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÑˆÐ¸Ñ€Ð¾ÐºÐ¾Ð³Ð¾ логотипу 310x150 (мають бути " +"310x150)." + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "Ðекоректні розмірноÑті Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–ÐºÐ½Ð° Ð²Ñ–Ñ‚Ð°Ð½Ð½Ñ (мають бути 620x300)." + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9198,6 +9455,13 @@ msgstr "" "Вузол ParallaxLayer працює, лише Ñкщо його вÑтановлено Ñк дочірній Ð´Ð»Ñ Ð²ÑƒÐ·Ð»Ð° " "ParallaxBackground." +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9388,6 +9652,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" "Ðічого не видно, оÑкільки Ñітки не було пов'Ñзано із проходами малюваннÑ." @@ -9405,15 +9676,12 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollow працюватиме лише Ñк дочірній елемент вузла Path." #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "OrientedPathFollow працюватиме лише Ñк дочірній елемент вузла Path." - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" -"OrientedPathFollow потребує Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Â«Up Vector» у його батьківÑькому Path." +"PathFollow ROTATION_ORIENTED потребує Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Â«Up Vector» у його " +"батьківÑькому реÑурÑÑ– Curve у Path." #: scene/3d/physics_body.cpp msgid "" @@ -9523,10 +9791,18 @@ msgstr "" "Цей вузол вважаєтьÑÑ Ð·Ð°Ñтарілим. СкориÑтайтеÑÑ Ð·Ð°Ð¼Ñ–Ñть нього AnimationTree." #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Raw (Ñирий) режим" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "Додати поточний колір в ÑкоÑті преÑету" @@ -9623,6 +9899,21 @@ msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð´Ð½Ð¾Ñ€Ñ–Ð´Ð½Ð¾Ð³Ð¾." msgid "Varyings can only be assigned in vertex function." msgstr "Змінні величини можна пов'Ñзувати лише із функцією вузлів." +#~ msgid "Warnings:" +#~ msgstr "ПопередженнÑ:" + +#~ msgid "Font Size:" +#~ msgstr "Розмір шрифту:" + +#~ msgid "Line:" +#~ msgstr "Ð Ñдок:" + +#~ msgid "Col:" +#~ msgstr "Колонка:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "OrientedPathFollow працюватиме лише Ñк дочірній елемент вузла Path." + #~ msgid "Split point with itself." #~ msgstr "Розділити точку." @@ -9635,9 +9926,6 @@ msgstr "Змінні величини можна пов'Ñзувати лише #~ msgid "Add Split" #~ msgstr "Додати поділ" -#~ msgid "Invalid Split: " -#~ msgstr "Ðекоректний поділ: " - #~ msgid "Remove Split" #~ msgstr "Вилучити поділ" diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index 81f83259b6..bd2de9fa57 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -540,20 +540,12 @@ msgstr "" msgid "Reset Zoom" msgstr "" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "" - -#: editor/code_editor.cpp -msgid "Line:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Col:" +msgid "Line and column numbers" msgstr "" #: editor/connections_dialog.cpp @@ -849,8 +841,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "" @@ -1272,9 +1264,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3213,6 +3221,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4165,6 +4186,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6169,7 +6200,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6246,7 +6277,11 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +msgid "Animations:" +msgstr "" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +msgid "New Animation" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6258,7 +6293,7 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +msgid "Animation Frames:" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -7017,6 +7052,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7030,6 +7097,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7712,6 +7792,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8517,10 +8609,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8913,6 +9001,87 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid package name:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Invalid Identifier:" +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -8946,6 +9115,50 @@ msgstr "" msgid "Using default boot splash image." msgstr "" +#: platform/uwp/export/export.cpp +msgid "Invalid package unique name." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9027,6 +9240,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9182,6 +9402,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9196,13 +9423,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9295,10 +9518,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" diff --git a/editor/translations/vi.po b/editor/translations/vi.po index 8cc9e18c86..843dc4355f 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -557,23 +557,14 @@ msgstr "Thu nhá»" msgid "Reset Zoom" msgstr "Äặt lại phóng" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -msgid "Line:" -msgstr "Dòng:" - -#: editor/code_editor.cpp -#, fuzzy -msgid "Col:" -msgstr "Col:" - #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" msgstr "Cách thức trong Node được chá»n phải được ghi rõ!" @@ -876,8 +867,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "Xóa" @@ -1294,9 +1285,25 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -3271,6 +3278,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4234,6 +4254,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6241,7 +6271,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6318,8 +6348,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "Các Công cụ Animation" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "Tạo Animation má»›i" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6330,8 +6366,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "Tên Animation:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7090,6 +7127,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7104,6 +7173,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7792,6 +7874,18 @@ msgid "Duplicate Node(s)" msgstr "Nhân đôi Node(s)" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "Xóa Node(s)?" @@ -8585,10 +8679,6 @@ msgid "Build Project" msgstr "" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "" @@ -8978,6 +9068,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "KÃch thước font không hợp lệ." + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "KÃch thước font không hợp lệ." + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "Chạy trong Trình duyệt web" @@ -9010,6 +9183,54 @@ msgstr "Không Ä‘á»c được file hình khởi động:" msgid "Using default boot splash image." msgstr "Sá» dụng hình khởi động mặc định." +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "KÃch thước font không hợp lệ." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "KÃch thước font không hợp lệ." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "KÃch thước font không hợp lệ." + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "KÃch thước font không hợp lệ." + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9091,6 +9312,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9246,6 +9474,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9260,13 +9495,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9360,10 +9591,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9450,9 +9689,12 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Line:" +#~ msgstr "Dòng:" + #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "KÃch thước font không hợp lệ." +#~ msgid "Col:" +#~ msgstr "Col:" #, fuzzy #~ msgid "Remove Split" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index 54736f34ac..334c7494c2 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -37,12 +37,16 @@ # yzt <834950797@qq.com>, 2018. # DKLost <514dklost@gmail.com>, 2018. # thanksshu <hezihanshangyuan@gmail.com>, 2018. +# Jsheng <yangea@outlook.com>, 2019. +# Zhang Zhibo <zzhibo98@gmail.com>, 2019. +# ws00010203 <ws00010203@hotmail.com>, 2019. +# Song DongHui <14729626293@163.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2018-12-18 01:28+0000\n" -"Last-Translator: thanksshu <hezihanshangyuan@gmail.com>\n" +"PO-Revision-Date: 2019-02-03 21:20+0000\n" +"Last-Translator: Song DongHui <14729626293@163.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" "Language: zh_CN\n" @@ -50,7 +54,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.4-dev\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -570,21 +574,13 @@ msgstr "缩å°" msgid "Reset Zoom" msgstr "é‡ç½®ç¼©æ”¾" -#: editor/code_editor.cpp -msgid "Warnings:" -msgstr "è¦å‘Šï¼š" - -#: editor/code_editor.cpp -msgid "Font Size:" -msgstr "å—体大å°:" - -#: editor/code_editor.cpp -msgid "Line:" -msgstr "行:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" +msgstr "è¦å‘Š" #: editor/code_editor.cpp -msgid "Col:" -msgstr "列:" +msgid "Line and column numbers" +msgstr "" #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" @@ -877,8 +873,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "åˆ é™¤" @@ -985,7 +981,6 @@ msgid "Uncompressing Assets" msgstr "æ— åŽ‹ç¼©èµ„æº" #: editor/editor_asset_installer.cpp editor/project_manager.cpp -#, fuzzy msgid "Package installed successfully!" msgstr "软件包安装æˆåŠŸï¼" @@ -1298,9 +1293,25 @@ msgid "Storing File:" msgstr "文件排åº:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "ç›®æ ‡è·¯å¾„æ‰¾ä¸åˆ°å¯¼å‡ºæ¨¡ç‰ˆï¼š" + +#: editor/editor_export.cpp msgid "Packing" msgstr "打包ä¸" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "找ä¸åˆ°è‡ªå®šä¹‰è°ƒè¯•包。" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "找ä¸åˆ°è‡ªå®šä¹‰å‘布包。" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶:" @@ -2559,17 +2570,14 @@ msgid "[Empty]" msgstr "[空]" #: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp -#, fuzzy msgid "Assign..." -msgstr "分é……。" +msgstr "分é……" #: editor/editor_properties.cpp -#, fuzzy msgid "Invalid RID" msgstr "è·¯å¾„éžæ³•" #: editor/editor_properties.cpp -#, fuzzy msgid "" "The selected resource (%s) does not match any type expected for this " "property (%s)." @@ -3265,6 +3273,19 @@ msgstr "预设..." msgid "Reimport" msgstr "釿–°å¯¼å…¥" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "ä¿å˜åœºæ™¯ï¼Œé‡æ–°å¯¼å…¥ï¼Œä»Žå¤´å¼€å§‹" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "改å˜è¿™ä¸ªå¯¼å…¥çš„æ–‡ä»¶ç±»åž‹åŽéœ€è¦é‡å¯ç¼–辑器." + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "è¦å‘Šï¼šèµ„æºä½¿ç”¨å†²çªï¼Œå°†ä¼šåœæ¢åŠ è½½ï¼Ž" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "åŠ è½½èµ„æºå¤±è´¥ã€‚" @@ -3436,7 +3457,6 @@ msgstr "æ·»åŠ åŠ¨ç”»" #: editor/plugins/animation_blend_space_2d_editor.cpp #: editor/plugins/animation_blend_tree_editor_plugin.cpp #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Load..." msgstr "åŠ è½½..." @@ -3814,9 +3834,8 @@ msgid "Connect nodes." msgstr "连接节点。" #: editor/plugins/animation_state_machine_editor.cpp -#, fuzzy msgid "Remove selected node or transition." -msgstr "移除选ä¸çš„节点或过渡动画" +msgstr "移除选ä¸çš„节点或过渡动画。" #: editor/plugins/animation_state_machine_editor.cpp msgid "Toggle autoplay this animation on start, restart or seek to zero." @@ -4214,6 +4233,17 @@ msgid "Move CanvasItem" msgstr "移动 CanvasItem" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "è¦å‘Šï¼šå®¹å™¨å级的ä½ç½®ä¸Žå¤§å°åªèƒ½ç”±å®ƒçš„父级确定。" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "仅锚点" @@ -4230,11 +4260,10 @@ msgid "Paste Pose" msgstr "粘贴姿势" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "" "Warning: Children of a container get their position and size determined only " "by their parent." -msgstr "è¦å‘Šï¼šå®¹å™¨ä¸çš„å级åªèƒ½ç”±å®ƒçš„父级确定ä½ç½®ä¸Žå¤§å°ã€‚" +msgstr "è¦å‘Šï¼šå®¹å™¨å级的ä½ç½®ä¸Žå¤§å°åªèƒ½ç”±å®ƒçš„父级确定。" #: editor/plugins/canvas_item_editor_plugin.cpp #: editor/plugins/texture_region_editor_plugin.cpp @@ -5116,9 +5145,8 @@ msgid "Create Polygon & UV" msgstr "创建多边形和 UV" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Create Internal Vertex" -msgstr "åˆ›å»ºæ°´å¹³æ ‡å°º" +msgstr "创建内部顶点" #: editor/plugins/polygon_2d_editor_plugin.cpp #, fuzzy @@ -5126,13 +5154,13 @@ msgid "Remove Internal Vertex" msgstr "移除曲线内控制点" #: editor/plugins/polygon_2d_editor_plugin.cpp +#, fuzzy msgid "Invalid Polygon (need 3 different vertices)" -msgstr "" +msgstr "æ— æ•ˆçš„å¤šè¾¹å½¢ï¼ˆéœ€è¦ä¸‰ä¸ªæŽ§åˆ¶ç‚¹ï¼‰" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Add Custom Polygon" -msgstr "编辑多边形" +msgstr "æ·»åŠ è‡ªå®šä¹‰å¤šè¾¹å½¢" #: editor/plugins/polygon_2d_editor_plugin.cpp #, fuzzy @@ -5169,9 +5197,8 @@ msgid "Points" msgstr "点" #: editor/plugins/polygon_2d_editor_plugin.cpp -#, fuzzy msgid "Polygons" -msgstr "多边形->UV" +msgstr "多边形-" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Bones" @@ -5207,13 +5234,13 @@ msgstr "缩放多边形" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create a custom polygon. Enables custom polygon rendering." -msgstr "" +msgstr "建立自定义多边形。å¯ç”¨è‡ªå®šä¹‰å¤šè¾¹å½¢æ¸²æŸ“。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "" "Remove a custom polygon. If none remain, custom polygon rendering is " "disabled." -msgstr "" +msgstr "移除自定义多边形。如果ä¸å˜åœ¨ï¼Œç¦ç”¨è‡ªå®šä¹‰å¤šè¾¹å½¢æ¸²æŸ“。" #: editor/plugins/polygon_2d_editor_plugin.cpp msgid "Paint weights with specified intensity." @@ -6205,7 +6232,7 @@ msgid "Post" msgstr "å‘布(Post)" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6281,7 +6308,13 @@ msgid "(empty)" msgstr "(空)" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" +#, fuzzy +msgid "Animations:" +msgstr "动画" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" msgstr "动画" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6293,7 +6326,8 @@ msgid "Loop" msgstr "循环" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" +#, fuzzy +msgid "Animation Frames:" msgstr "动画帧" #: editor/plugins/sprite_frames_editor_plugin.cpp @@ -6624,8 +6658,9 @@ msgid "You haven't selected a texture to remove." msgstr "请先选择è¦ç§»é™¤çš„纹ç†ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp +#, fuzzy msgid "Create from scene? This will overwrite all current tiles." -msgstr "" +msgstr "ä»Žåœºæ™¯åˆ›å»ºï¼Ÿè¿™å°†è¦†ç›–æ‰€æœ‰å½“å‰æ ‡é¢˜ã€‚" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from scene?" @@ -6711,7 +6746,7 @@ msgstr "新建目录" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Set Tile Icon" -msgstr "" +msgstr "设置纹ç†å›¾æ ‡" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -6740,7 +6775,7 @@ msgstr "ç²˜è´´ä½æŽ©ç 。" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Clear Tile Bitmask" -msgstr "" +msgstr "æ¸…é™¤ä½æŽ©ç " #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -6769,7 +6804,7 @@ msgstr "编辑ç›é€‰å™¨" #: editor/plugins/tile_set_editor_plugin.cpp msgid "Edit Tile Z Index" -msgstr "" +msgstr "编辑纹ç†çš„Zåæ ‡" #: editor/plugins/tile_set_editor_plugin.cpp #, fuzzy @@ -6919,7 +6954,7 @@ msgstr "使用下列密ç åŠ å¯†" #: editor/project_export.cpp msgid "Invalid Encryption Key (must be 64 characters long)" -msgstr "" +msgstr "æ— æ•ˆçš„åŠ å¯†å¯†é’¥ï¼ˆé•¿åº¦å¿…é¡»ä¸º64个å—符)" #: editor/project_export.cpp msgid "Script Encryption Key (256-bits as hex):" @@ -7061,19 +7096,76 @@ msgid "Browse" msgstr "æµè§ˆ" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "渲染器:" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "OpenGL ES 3.0" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" +"更高的视觉质é‡\n" +"所有å¯ç”¨åŠŸèƒ½\n" +"与旧硬件ä¸å…¼å®¹\n" +"䏿ލè用于网络游æˆ" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" +"较低的视觉质é‡\n" +"æŸäº›åŠŸèƒ½ä¸å¯ç”¨\n" +"适用于大多数硬件\n" +"推è用于网络游æˆ" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "渲染器å¯ä»¥ç¨åŽæ›´æ”¹ï¼Œä½†å¯èƒ½éœ€è¦è°ƒæ•´åœºæ™¯ã€‚" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "未命å项目" #: editor/project_manager.cpp -#, fuzzy msgid "Can't open project at '%s'." -msgstr "æ— æ³•æ‰“å¼€é¡¹ç›®" +msgstr "æ— æ³•æ‰“å¼€ä½äºŽâ€œ%sâ€çš„相应项目." #: editor/project_manager.cpp msgid "Are you sure to open more than one project?" msgstr "æ‚¨ç¡®å®šè¦æ‰“开多个项目å—?" #: editor/project_manager.cpp +#, fuzzy +msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" +"以下项目设置文件是由旧的引擎版本生æˆçš„,需è¦ä¸ºæ¤ç‰ˆæœ¬è½¬æ¢ï¼š\n" +"%s\n" +"是å¦è¦è½¬æ¢å®ƒï¼Ÿ\n" +"è¦å‘Šï¼šæ‚¨å°†æ— 法å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开项目。" + +#: editor/project_manager.cpp msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" @@ -7084,12 +7176,16 @@ msgid "" "Warning: You will not be able to open the project with previous versions of " "the engine anymore." msgstr "" +"以下项目设置文件是由旧的引擎版本生æˆçš„,需è¦ä¸ºæ¤ç‰ˆæœ¬è½¬æ¢ï¼š\n" +"%s\n" +"是å¦è¦è½¬æ¢å®ƒï¼Ÿ\n" +"è¦å‘Šï¼šæ‚¨å°†æ— 法å†ä½¿ç”¨ä»¥å‰ç‰ˆæœ¬çš„引擎打开项目。" #: editor/project_manager.cpp msgid "" "The project settings were created by a newer engine version, whose settings " "are not compatible with this version." -msgstr "" +msgstr "项目设置是由更新的引擎版本创建的,其设置与æ¤ç‰ˆæœ¬ä¸å…¼å®¹ã€‚" #: editor/project_manager.cpp msgid "" @@ -7766,6 +7862,20 @@ msgid "Duplicate Node(s)" msgstr "å¤åˆ¶èŠ‚ç‚¹" #: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "æ— æ³•é‡æ–°è®¾ç½®ç»§æ‰¿åœºæ™¯ä¸çš„èŠ‚ç‚¹ï¼ŒèŠ‚ç‚¹é¡ºåºæ— 法更改。" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "节点必须属于已编辑的场景æ‰èƒ½æˆä¸ºæ ¹èŠ‚ç‚¹ã€‚" + +#: editor/scene_tree_dock.cpp +#, fuzzy +msgid "Instantiated scenes can't become root" +msgstr "实例化的场景ä¸èƒ½æˆä¸ºæ ¹èŠ‚ç‚¹" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "确定è¦åˆ 除节点å—?" @@ -8564,10 +8674,6 @@ msgid "Build Project" msgstr "构建项目" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "è¦å‘Š" - -#: modules/mono/editor/mono_bottom_panel.cpp msgid "View log" msgstr "查看日志" @@ -8956,6 +9062,90 @@ msgstr "得到 %s" msgid "Set %s" msgstr "设值 %s" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "缺包å." + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "包段的长度必须为éžé›¶ã€‚" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "Android应用程åºåŒ…åç§°ä¸ä¸å…许使用å—符“%sâ€ã€‚" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "包段ä¸çš„第一个å—符ä¸èƒ½æ˜¯æ•°å—。" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "包段ä¸çš„第一个å—符ä¸èƒ½æ˜¯â€œ%sâ€ã€‚" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "包必须至少有一个“.â€åˆ†éš”符。" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "未在编辑器设置ä¸é…ç½®ADB坿‰§è¡Œæ–‡ä»¶ã€‚" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "未在编辑器设置ä¸é…ç½®OpenJDK Jarsigner。" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "未在编辑器设置或预设ä¸é…置调试密钥库。" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "APKæ‰©å±•çš„å…¬é’¥æ— æ•ˆã€‚" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "ç±»åéžæ³•" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "ç¼ºå°‘æ ‡è¯†ç¬¦ã€‚" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "æ ‡è¯†ç¬¦å—æ®µä¸èƒ½ä¸ºç©º." + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "The character '%s' is not allowed in Identifier." +msgstr "åç§°ä¸æ˜¯æœ‰æ•ˆçš„æ ‡è¯†ç¬¦ï¼š" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "æ ‡è¯†ç¬¦æ®µä¸çš„第一个å—符ä¸èƒ½æ˜¯æ•°å—。" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "æ ‡è¯†ç¬¦æ®µä¸çš„第一个å—符ä¸èƒ½æ˜¯\"%s\"。" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "æ ‡è¯†ç¬¦å¿…é¡»è‡³å°‘æœ‰ä¸€ä¸ªâ€œ.â€åˆ†éš”符。" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "未指定应用商店团队ID-æ— æ³•é…置项目。" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "åç§°ä¸æ˜¯æœ‰æ•ˆçš„æ ‡è¯†ç¬¦ï¼š" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "é¢„è®¾ä¸æœªæŒ‡å®šå¿…éœ€çš„å›¾æ ‡ã€‚" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "在æµè§ˆå™¨ä¸è¿è¡Œ" @@ -8988,6 +9178,51 @@ msgstr "æ— æ³•è¯»å–å¯åŠ¨å›¾ç‰‡:" msgid "Using default boot splash image." msgstr "使用默认å¯åŠ¨å›¾ç‰‡ã€‚" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "åç§°éžæ³•。" + +#: platform/uwp/export/export.cpp +msgid "Invalid product GUID." +msgstr "产å“GUIDéžæ³•。" + +#: platform/uwp/export/export.cpp +msgid "Invalid publisher GUID." +msgstr "å‘布GUIDéžæ³•。" + +#: platform/uwp/export/export.cpp +msgid "Invalid background color." +msgstr "æ— æ•ˆçš„èƒŒæ™¯é¢œè‰²ã€‚" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆå›¾åƒå°ºå¯¸å¿…须是50x50)。" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "æ£æ–¹å½¢çš„ 44x44 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º44x44)。" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "æ£æ–¹å½¢çš„ 71x71 Logoæ ‡å¿—å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º71x71)。" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "æ£æ–¹çš„ 150x150 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º150x150)。" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "æ£æ–¹å½¢çš„ 310x310 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º310x310)。" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "宽幅310x150 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º310x150)。" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "å¯åŠ¨ç”»é¢å›¾ç‰‡å°ºå¯¸æ— 效(应为620x300)。" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9084,6 +9319,13 @@ msgid "" msgstr "" "ParallaxLayer类型的节点必须作为ParallaxBackgroundçš„å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9252,6 +9494,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "ç²’åä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼(meshe)指定到绘制通é“(draw passes)。" @@ -9266,14 +9515,10 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "PathFollowç±»åž‹çš„èŠ‚ç‚¹åªæœ‰ä½œä¸ºPath类型节点的å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" -"OrientedPathFollow ç±»åž‹çš„èŠ‚ç‚¹åªæœ‰ä½œä¸ºPath类型节点的å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" - -#: scene/3d/path.cpp +#, fuzzy msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "OrientedPathFollow 需è¦åœ¨å…¶çˆ¶è·¯å¾„ä¸å¯ç”¨â€œUp Vectorsâ€ã€‚" #: scene/3d/physics_body.cpp @@ -9377,10 +9622,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "这个节点已被弃用。请使用Animation Tree代替。" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "Raw 模å¼" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "将当å‰é¢œè‰²æ·»åŠ ä¸ºé¢„è®¾" @@ -9471,6 +9724,22 @@ msgstr "对uniform的赋值。" msgid "Varyings can only be assigned in vertex function." msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸æŒ‡å®šã€‚" +#~ msgid "Warnings:" +#~ msgstr "è¦å‘Šï¼š" + +#~ msgid "Font Size:" +#~ msgstr "å—体大å°:" + +#~ msgid "Line:" +#~ msgstr "行:" + +#~ msgid "Col:" +#~ msgstr "列:" + +#~ msgid "OrientedPathFollow only works when set as a child of a Path node." +#~ msgstr "" +#~ "OrientedPathFollow ç±»åž‹çš„èŠ‚ç‚¹åªæœ‰ä½œä¸ºPath类型节点的å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" + #~ msgid "Split point with itself." #~ msgstr "拆分点本身。" @@ -10709,52 +10978,6 @@ msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸æŒ‡å®šã€‚" #~ msgid "Error creating the package signature." #~ msgstr "创建包(PCK)ç¾å时出错。" -#~ msgid "" -#~ "No export templates found.\n" -#~ "Download and install export templates." -#~ msgstr "" -#~ "找ä¸åˆ°å¯¼å‡ºæ¨¡ç‰ˆã€‚\n" -#~ "下载并安装导出模版。" - -#~ msgid "Custom debug package not found." -#~ msgstr "找ä¸åˆ°è‡ªå®šä¹‰è°ƒè¯•包。" - -#~ msgid "Custom release package not found." -#~ msgstr "找ä¸åˆ°è‡ªå®šä¹‰å‘布包。" - -#~ msgid "Invalid unique name." -#~ msgstr "åç§°éžæ³•。" - -#~ msgid "Invalid product GUID." -#~ msgstr "产å“GUIDéžæ³•。" - -#~ msgid "Invalid publisher GUID." -#~ msgstr "å‘布GUIDéžæ³•。" - -#~ msgid "Invalid background color." -#~ msgstr "æ— æ•ˆçš„èƒŒæ™¯é¢œè‰²ã€‚" - -#~ msgid "Invalid Store Logo image dimensions (should be 50x50)." -#~ msgstr "Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆå›¾åƒå°ºå¯¸å¿…须是50x50)。" - -#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." -#~ msgstr "æ£æ–¹å½¢çš„ 44x44 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º44x44)。" - -#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." -#~ msgstr "æ£æ–¹å½¢çš„ 71x71 Logoæ ‡å¿—å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º71x71)。" - -#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." -#~ msgstr "æ£æ–¹çš„ 150x150 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º150x150)。" - -#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." -#~ msgstr "æ£æ–¹å½¢çš„ 310x310 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º310x310)。" - -#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." -#~ msgstr "宽幅310x150 Logoå›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”ä¸º310x150)。" - -#~ msgid "Invalid splash screen image dimensions (should be 620x300)." -#~ msgstr "å¯åŠ¨ç”»é¢å›¾ç‰‡å°ºå¯¸æ— 效(应为620x300)。" - #~ msgid "RAW Mode" #~ msgstr "RAW模å¼" diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index 90e222dcb2..e076abd623 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -579,23 +579,14 @@ msgstr "縮å°" msgid "Reset Zoom" msgstr "é‡è¨ç¸®æ”¾æ¯”例" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -#, fuzzy -msgid "Line:" -msgstr "行:" - -#: editor/code_editor.cpp -msgid "Col:" -msgstr "列:" - #: editor/connections_dialog.cpp msgid "Method in target Node must be specified!" msgstr "" @@ -900,8 +891,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "刪除" @@ -1355,9 +1346,26 @@ msgid "Storing File:" msgstr "" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +#, fuzzy +msgid "Custom debug template not found." +msgstr "未找到佈局å稱ï¼" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp #, fuzzy msgid "Template file not found:" @@ -3424,6 +3432,19 @@ msgstr "" msgid "Reimport" msgstr "å°Žå…¥" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚" @@ -4414,6 +4435,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6473,7 +6504,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6554,8 +6585,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "新增動畫" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "新的動畫å稱:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6566,8 +6603,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "新的動畫å稱:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7354,6 +7392,38 @@ msgid "Browse" msgstr "ç€è¦½" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7368,6 +7438,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -8071,6 +8154,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8903,10 +8998,6 @@ msgid "Build Project" msgstr "專案" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "檔案" @@ -9313,6 +9404,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "無效å稱" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "無效å—åž‹" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp #, fuzzy msgid "Run in Browser" @@ -9352,6 +9526,54 @@ msgstr "無法新增資料夾" msgid "Using default boot splash image." msgstr "無法新增資料夾" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "無效å稱" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "無效å—åž‹" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "無效å—åž‹" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "無效å稱" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9433,6 +9655,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9588,6 +9817,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9602,13 +9838,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9705,10 +9937,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "" @@ -9794,6 +10034,13 @@ msgid "Varyings can only be assigned in vertex function." msgstr "" #, fuzzy +#~ msgid "Line:" +#~ msgstr "行:" + +#~ msgid "Col:" +#~ msgstr "列:" + +#, fuzzy #~ msgid "Split already exists." #~ msgstr "AutoLoad '%s'å·²å˜åœ¨ï¼" @@ -10060,14 +10307,6 @@ msgstr "" #~ "(Unsaved changes will be lost)" #~ msgstr "回到專案管ç†å™¨ï¼Ÿï¼ˆæœªå„²å˜çš„æ›´æ”¹å°‡æœƒæ¶ˆå¤±ï¼‰" -#, fuzzy -#~ msgid "Invalid unique name." -#~ msgstr "無效å稱" - -#, fuzzy -#~ msgid "Invalid product GUID." -#~ msgstr "無效å—åž‹" - #~ msgid "Valid name" #~ msgstr "有效å稱" diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index c752f09422..5b9aeb74be 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -12,12 +12,13 @@ # Qing <icinriiq@gmail.com>, 2018. # Sam Pan <sampan66@gmail.com>, 2016. # ken l <macauhome@gmail.com>, 2018. +# Eric K <eric900601@gmail.com>, 2019. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-12-13 14:44+0100\n" -"Last-Translator: ken l <macauhome@gmail.com>\n" +"PO-Revision-Date: 2019-02-01 12:09+0000\n" +"Last-Translator: Eric K <eric900601@gmail.com>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hant/>\n" "Language: zh_TW\n" @@ -25,34 +26,35 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.2\n" +"X-Generator: Weblate 3.5-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "" +msgstr "Convert()å‡½æ•¸æ‰€æ”¶åˆ°çš„åƒæ•¸éŒ¯èª¤ï¼Œè«‹è©¦è‘—以 TYPE_ 作為開é 。" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/mono/glue/gd_glue.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Not enough bytes for decoding bytes, or invalid format." -msgstr "解碼å—節ä½å…ƒä¸è¶³ï¼Œæˆ–ç‚ºç„¡æ•ˆæ ¼å¼ã€‚" +msgstr "輸入的解碼å—節ä¸è¶³ã€æˆ–ç‚ºç„¡æ•ˆæ ¼å¼ã€‚" #: core/math/expression.cpp +#, fuzzy msgid "Invalid input %i (not passed) in expression" -msgstr "" +msgstr "所輸入的 %i 於表ç¾å¼ä¸ç„¡æ•ˆ" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "" +msgstr "å› è©²å¯¦ä¾‹(instance)為空,self 無法被使用" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." -msgstr "" +msgstr "æ¤æ•¸å€¼ç„¡æ³•被 %sã€%s å’Œ %s é‹ç®—。" #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "" +msgstr "無效的內å˜åœ°å€é¡žåž‹ %sï¼ŒåŸºç¤Žåž‹å¼ %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" @@ -80,47 +82,44 @@ msgid "Mirror" msgstr "" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Insert Key Here" -msgstr "動畫新增按éµ" +msgstr "åœ¨æ¤æ’å…¥ç•«æ ¼" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Duplicate Selected Key(s)" -msgstr "複製所é¸" +msgstr "複製所é¸ç•«æ ¼" #: editor/animation_bezier_editor.cpp -#, fuzzy msgid "Delete Selected Key(s)" -msgstr "ç¢ºå®šåˆªé™¤æ‰€é¸æ“‡çš„æª”案嗎?" +msgstr "刪除所é¸ç•«æ ¼" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "複製動畫關éµç•«æ ¼" +msgstr "複製關éµç•«æ ¼" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" -msgstr "刪除動畫關éµç•«æ ¼" +msgstr "刪除關éµç•«æ ¼" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Time" -msgstr "動畫更改關éµå¹€æ™‚é–“" +msgstr "變更關éµç•«æ ¼çš„æ™‚é–“" #: editor/animation_track_editor.cpp msgid "Anim Change Transition" -msgstr "å‹•ç•«æ›´æ”¹è½‰å ´æ•ˆæžœ" +msgstr "è®Šæ›´è½‰å ´æ•ˆæžœ" #: editor/animation_track_editor.cpp msgid "Anim Change Transform" -msgstr "動畫更改座標" +msgstr "變更動畫變æ›" #: editor/animation_track_editor.cpp msgid "Anim Change Keyframe Value" -msgstr "動畫更改關éµå¹€æ•¸å€¼" +msgstr "變更關éµç•«æ ¼çš„æ•¸å€¼" #: editor/animation_track_editor.cpp msgid "Anim Change Call" -msgstr "動畫更改呼å«" +msgstr "更改回調" #: editor/animation_track_editor.cpp msgid "Property Track" @@ -152,9 +151,8 @@ msgid "Add Track" msgstr "æ·»åŠ å‹•ç•«è»Œ" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Animation Length Time (seconds)" -msgstr "動畫長度 (ç§’)。" +msgstr "動畫長度(秒)" #: editor/animation_track_editor.cpp #, fuzzy @@ -258,11 +256,11 @@ msgstr "刪除動畫軌" #: editor/animation_track_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "%s 新增新軌並æ’å…¥ç•«æ ¼?" +msgstr "為 %s 新增動畫軌並æ’å…¥ç•«æ ¼ï¼Ÿ" #: editor/animation_track_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "創建 %d 個新軌並æ’å…¥ç•«æ ¼?" +msgstr "創建 %d 個動畫軌並æ’å…¥ç•«æ ¼ï¼Ÿ" #: editor/animation_track_editor.cpp editor/create_dialog.cpp #: editor/editor_audio_buses.cpp editor/editor_plugin_settings.cpp @@ -283,7 +281,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Anim Create & Insert" -msgstr "動畫建立與æ’å…¥" +msgstr "新增/æ’入動畫" #: editor/animation_track_editor.cpp #, fuzzy @@ -292,7 +290,7 @@ msgstr "動畫新增軌跡與按éµ" #: editor/animation_track_editor.cpp msgid "Anim Insert Key" -msgstr "動畫新增按éµ" +msgstr "新增關éµç•«æ ¼" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." @@ -336,7 +334,7 @@ msgstr "" #: editor/animation_track_editor.cpp msgid "Anim Move Keys" -msgstr "ç§»å‹•å‹•ç•«ç•«æ ¼" +msgstr "移動關éµç•«æ ¼" #: editor/animation_track_editor.cpp msgid "Clipboard is empty" @@ -399,7 +397,7 @@ msgstr "縮放所é¸" #: editor/animation_track_editor.cpp msgid "Scale From Cursor" -msgstr "由游標ä½ç½®ç¸®æ”¾" +msgstr "由游標縮放" #: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp msgid "Duplicate Selection" @@ -407,7 +405,7 @@ msgstr "複製所é¸" #: editor/animation_track_editor.cpp msgid "Duplicate Transposed" -msgstr "é‡è¤‡è½‰ç½®" +msgstr "複製並轉置" #: editor/animation_track_editor.cpp #, fuzzy @@ -426,7 +424,7 @@ msgstr "往上一æ¥" #: editor/animation_track_editor.cpp msgid "Optimize Animation" -msgstr "最佳化動畫" +msgstr "動畫最佳化" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation" @@ -463,11 +461,11 @@ msgstr "最佳化" #: editor/animation_track_editor.cpp msgid "Remove invalid keys" -msgstr "移除無效按éµ" +msgstr "移除無效的關éµç•«æ ¼" #: editor/animation_track_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "刪除未解決或是空的軌é“" +msgstr "刪除未處ç†çš„空白軌é“" #: editor/animation_track_editor.cpp msgid "Clean-up all animations" @@ -475,7 +473,7 @@ msgstr "清除所有動畫" #: editor/animation_track_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "清除動畫 (無法復原!)" +msgstr "永久刪除動畫(無法復原ï¼ï¼‰" #: editor/animation_track_editor.cpp msgid "Clean-Up" @@ -523,7 +521,7 @@ msgstr "ç„¡ç¬¦åˆæ¢ä»¶" #: editor/code_editor.cpp msgid "Replaced %d occurrence(s)." -msgstr "å–代了 %d 個" +msgstr "å–代了 %d 個。" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Match Case" @@ -531,7 +529,7 @@ msgstr "符åˆå¤§å°å¯«" #: editor/code_editor.cpp editor/find_in_files.cpp msgid "Whole Words" -msgstr "整個å—" +msgstr "符åˆå®Œæ•´å–®å—" #: editor/code_editor.cpp editor/rename_dialog.cpp msgid "Replace" @@ -561,31 +559,23 @@ msgstr "縮å°" msgid "Reset Zoom" msgstr "é‡è¨ç¸®æ”¾å¤§å°" -#: editor/code_editor.cpp -msgid "Warnings:" +#: editor/code_editor.cpp modules/mono/editor/mono_bottom_panel.cpp +msgid "Warnings" msgstr "" #: editor/code_editor.cpp -msgid "Font Size:" +msgid "Line and column numbers" msgstr "" -#: editor/code_editor.cpp -msgid "Line:" -msgstr "行:" - -#: editor/code_editor.cpp -msgid "Col:" -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 "找ä¸åˆ°ç›®æ¨™æ–¹æ³•! 指定一個å°çš„æ–¹æ³•æˆ–é™„åŠ ä¸€å€‹è…³æœ¬åˆ°ç›®æ¨™çš„ç¯€é»žä¸Šã€‚" +msgstr "找ä¸åˆ°ç›®æ¨™æ–¹æ³•ï¼è«‹æŒ‡å®šæœ‰æ•ˆæ–¹æ³•ã€æˆ–å°‡è…³æœ¬é™„åŠ è‡³ç›®æ¨™ç¯€é»žä¸Šã€‚" #: editor/connections_dialog.cpp msgid "Connect To Node:" @@ -881,8 +871,8 @@ 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 +#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp +#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp msgid "Delete" msgstr "刪除" @@ -1322,9 +1312,25 @@ msgid "Storing File:" msgstr "å„²å˜æª”案:" #: editor/editor_export.cpp +msgid "No export template found at the expected path:" +msgstr "" + +#: editor/editor_export.cpp msgid "Packing" msgstr "" +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom debug template not found." +msgstr "" + +#: editor/editor_export.cpp platform/android/export/export.cpp +#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp +#: platform/osx/export/export.cpp platform/uwp/export/export.cpp +msgid "Custom release template not found." +msgstr "" + #: editor/editor_export.cpp platform/javascript/export/export.cpp msgid "Template file not found:" msgstr "" @@ -1853,7 +1859,7 @@ 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!" @@ -1890,7 +1896,7 @@ msgstr "å¦å˜å ´æ™¯ç‚º..." #: editor/editor_node.cpp msgid "No" -msgstr "" +msgstr "䏿˜¯" #: editor/editor_node.cpp msgid "Yes" @@ -1902,7 +1908,7 @@ msgstr "æ¤å ´æ™¯å°šæœªå˜æª”, 執行å‰è«‹å…ˆå˜æª”" #: editor/editor_node.cpp editor/scene_tree_dock.cpp msgid "This operation can't be done without a scene." -msgstr "" +msgstr "在è¨ç½®å ´æ™¯å‰ï¼Œç„¡æ³•完æˆè©²æŒ‡å®šæ“作。" #: editor/editor_node.cpp msgid "Export Mesh Library" @@ -1910,20 +1916,19 @@ msgstr "" #: editor/editor_node.cpp msgid "This operation can't be done without a root node." -msgstr "æ¤æ“ä½œç„¡æ³•åœ¨æ²’æœ‰æ ¹ç¯€é»žçš„æƒ…æ³ä¸‹é€²è¡Œã€‚" +msgstr "在è¨ç½®æ ¹ç¯€é»ž(root node)å‰ï¼Œç„¡æ³•完æˆè©²æŒ‡å®šæ“作。" #: editor/editor_node.cpp msgid "Export Tile Set" msgstr "" #: editor/editor_node.cpp -#, fuzzy msgid "This operation can't be done without a selected node." -msgstr "æ¤æ“ä½œéœ€è¦æœ‰é¸æ“‡è‘—節點æ‰èƒ½é€²è¡Œã€‚" +msgstr "在è¨ç½®è‘—節點(selected node)å‰ï¼Œç„¡æ³•完æˆè©²æŒ‡å®šæ“作。" #: 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." @@ -1934,12 +1939,13 @@ msgid "Revert" msgstr "還原" #: editor/editor_node.cpp +#, fuzzy msgid "This action cannot be undone. Revert anyway?" -msgstr "æ¤æ“作無法復原, 確定è¦é‚„原嗎?" +msgstr "æ¤æ“作無法被, 確定è¦é‚„原嗎?" #: editor/editor_node.cpp msgid "Quick Run Scene..." -msgstr "å¿«é€ŸåŸ·è¡Œå ´æ™¯..." +msgstr "å¿«é€ŸåŸ·è¡Œå ´æ™¯â€¦" #: editor/editor_node.cpp msgid "Quit" @@ -1947,89 +1953,93 @@ 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 "" +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 "" "Unable to load addon script from path: '%s' There seems to be an error in " "the code, please check the syntax." -msgstr "" +msgstr "無法從 '%s' ä¸é †åˆ©è®€å–腳本。å¯èƒ½å‡ºè‡ªç·¨ç¢¼éŒ¯èª¤ï¼Œè«‹æª¢å¯Ÿèªžæ³•æ˜¯å¦æ£ç¢ºã€‚" #: editor/editor_node.cpp msgid "" "Unable to load addon script from path: '%s' Base type is not EditorPlugin." -msgstr "" +msgstr "無法從 '%s' ä¸é †åˆ©è®€å–腳本。基本類型 的腳本並ä¸å±¬æ–¼ 編輯類æ’件。" #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s' Script is not in tool mode." -msgstr "" +msgstr "無法從 '%s' ä¸é †åˆ©è®€å–腳本。æ¤è…³æœ¬ä¸¦ä¸è™•於工具模å¼ä¸‹ã€‚" #: editor/editor_node.cpp msgid "" "Scene '%s' was automatically imported, so it can't be modified.\n" "To make changes to it, a new inherited scene can be created." msgstr "" +"å ´æ™¯\"%s\"為自動導入,並ä¸èƒ½è¢«ä¿®æ”¹ã€‚\n" +"è‹¥è¦é€²è¡Œæ›´æ”¹ï¼Œè«‹å»ºç«‹æ–°çš„å ´æ™¯ã€‚" #: 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 +#, fuzzy msgid "Scene '%s' has broken dependencies:" -msgstr "" +msgstr "å ´æ™¯ '%s' çš„ä¾å˜é—œä¿‚å·²è¢«ç ´å£žã€‚" #: editor/editor_node.cpp -#, fuzzy msgid "Clear Recent Scenes" -msgstr "é—œé–‰å ´æ™¯" +msgstr "æ¸…é™¤æœ€è¿‘é–‹å•Ÿçš„å ´æ™¯" #: editor/editor_node.cpp msgid "Save Layout" -msgstr "" +msgstr "儲å˜ä½ˆå±€" #: editor/editor_node.cpp msgid "Delete Layout" -msgstr "" +msgstr "刪除佈局" #: editor/editor_node.cpp editor/import_dock.cpp #: editor/script_create_dialog.cpp @@ -2038,28 +2048,24 @@ msgstr "é è¨" #: editor/editor_node.cpp editor/editor_properties.cpp #: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp -#, fuzzy msgid "Show in FileSystem" -msgstr "在檔案管ç†å“¡å…§é¡¯ç¤º" +msgstr "在檔案系統ä¸é¡¯ç¤º" #: editor/editor_node.cpp -#, fuzzy msgid "Play This Scene" -msgstr "æš«åœå ´æ™¯" +msgstr "é‹è¡Œæ¤å ´æ™¯" #: editor/editor_node.cpp -#, fuzzy msgid "Close Tab" -msgstr "關閉" +msgstr "關閉分é " #: editor/editor_node.cpp msgid "Switch Scene Tab" msgstr "切æ›å ´æ™¯åˆ†é " #: editor/editor_node.cpp -#, fuzzy msgid "%d more files or folders" -msgstr "還有 %d 個檔案或資料夾" +msgstr "還有 %d 個檔案/資料夾" #: editor/editor_node.cpp #, fuzzy @@ -2067,26 +2073,24 @@ msgid "%d more folders" msgstr "還有 %d 個檔案" #: editor/editor_node.cpp -#, fuzzy msgid "%d more files" msgstr "還有 %d 個檔案" #: editor/editor_node.cpp msgid "Dock Position" -msgstr "" +msgstr "版é¢ä½ç½®" #: editor/editor_node.cpp msgid "Distraction Free Mode" -msgstr "" +msgstr "無干擾模å¼" #: editor/editor_node.cpp msgid "Toggle distraction-free mode." -msgstr "" +msgstr "切æ›ç‚ºç„¡å¹²æ“¾æ¨¡å¼ã€‚" #: editor/editor_node.cpp -#, fuzzy msgid "Add a new scene." -msgstr "æ›´æ–°å ´æ™¯ä¸..." +msgstr "æ–°å¢žå ´æ™¯ã€‚" #: editor/editor_node.cpp #, fuzzy @@ -2095,35 +2099,35 @@ 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..." -msgstr "éŽæ¿¾æª”案..." +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" @@ -2140,42 +2144,41 @@ 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..." -msgstr "" +msgstr "網狀資料庫(MeshLibrary)…" #: editor/editor_node.cpp msgid "TileSet..." -msgstr "" +msgstr "å€å¡Šç´ æâ€¦" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Undo" -msgstr "復原" +msgstr "還原" #: editor/editor_node.cpp editor/plugins/script_text_editor.cpp #: scene/gui/line_edit.cpp scene/gui/text_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 -#, fuzzy msgid "Project" -msgstr "專案è¨å®š" +msgstr "專案" #: editor/editor_node.cpp msgid "Project Settings" @@ -2190,32 +2193,31 @@ msgid "Tools" msgstr "工具" #: editor/editor_node.cpp -#, fuzzy msgid "Open Project Data Folder" -msgstr "專案創始人" +msgstr "開啟專案資料夾" #: editor/editor_node.cpp msgid "Quit to Project List" -msgstr "" +msgstr "退出到專案列表" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: editor/project_export.cpp 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 "" +msgstr "當輸出或發布專案後,å¯åŸ·è¡Œæ–‡ä»¶(exe)å°‡æœƒå˜—è©¦é€£çµæœ¬æ©Ÿï¼©ï¼°ï¼Œä»¥é€²è¡ŒåµéŒ¯ã€‚" #: editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "" +msgstr "å°åž‹éƒ¨å±¬ & 網路文件系統(NFS)" #: editor/editor_node.cpp msgid "" @@ -2226,30 +2228,34 @@ 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" +"在Androidå¹³å°ï¼Œé€éŽUSB發布能ç²å¾—更快的效率。\n" +"æ¤é¸é …ç”¨æ–¼åŠ é€ŸéŠæˆ²(尤其是檔案ç¹å¤š)的測試。" #: editor/editor_node.cpp msgid "Visible Collision Shapes" -msgstr "" +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 "" +msgstr "啟用æ¤é¸é …後,碰撞å€åŸŸ/射線節點 å°‡æœƒæ–¼éŠæˆ²ä¸é¡¯ç¤ºã€‚" #: editor/editor_node.cpp msgid "Visible Navigation" -msgstr "" +msgstr "導航的顯示" #: editor/editor_node.cpp msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." -msgstr "" +msgstr "啟用æ¤é¸é …後,導航所用的網線/多邊形 å°‡æœƒæ–¼éŠæˆ²ä¸é¡¯ç¤ºã€‚" #: editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "åŒæ¥å ´æ™¯çš„變更" #: editor/editor_node.cpp msgid "" @@ -2258,10 +2264,12 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"啟用æ¤é¸é …後,編輯器ä¸çš„æ‰€æœ‰ä¿®æ”¹ï¼Œéƒ½æœƒç«‹å³åæ˜ æ–¼é‹è¡Œä¸çš„éŠæˆ²ã€‚\n" +"在é 端è£ç½®æ¸¬è©¦æ™‚,é…åˆç¶²è·¯æ–‡ä»¶ç³»çµ±(NFS)使用能更æé«˜æ•ˆçŽ‡ã€‚" #: editor/editor_node.cpp msgid "Sync Script Changes" -msgstr "" +msgstr "åŒæ¥è…³æœ¬çš„變更" #: editor/editor_node.cpp msgid "" @@ -2270,42 +2278,44 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"啟用æ¤é¸é …後,腳本的所有修改,都會立å³åæ˜ æ–¼é‹è¡Œä¸çš„éŠæˆ²ã€‚\n" +"在é 端è£ç½®æ¸¬è©¦æ™‚,é…åˆç¶²è·¯æ–‡ä»¶ç³»çµ±(NFS)使用能更æé«˜æ•ˆçŽ‡ã€‚" #: 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 msgid "Open Editor Data/Settings Folder" -msgstr "" +msgstr "開啟 編輯器數據/è¨å®š 資料夾" #: editor/editor_node.cpp msgid "Open Editor Data Folder" -msgstr "" +msgstr "開啟 編輯器數據 資料夾" #: editor/editor_node.cpp msgid "Open Editor Settings Folder" -msgstr "" +msgstr "開啟 編輯器è¨å®š 資料夾" #: editor/editor_node.cpp editor/project_export.cpp msgid "Manage Export Templates" -msgstr "" +msgstr "管ç†è¼¸å‡ºæ¨¡æ¿" #: editor/editor_node.cpp msgid "Help" -msgstr "" +msgstr "幫助" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp #: editor/plugins/script_editor_plugin.cpp @@ -2317,15 +2327,16 @@ 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 "Q&A" #: editor/editor_node.cpp +#, fuzzy msgid "Issue Tracker" -msgstr "" +msgstr "å•題追蹤器" #: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp msgid "Community" @@ -2337,11 +2348,11 @@ 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" @@ -2361,58 +2372,57 @@ 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 "Changing the video driver requires restarting the editor." -msgstr "" +msgstr "åœ¨æ›´å‹•é¡¯ç¤ºé©…å‹•å¾Œï¼Œå¿…é ˆé‡æ–°é–‹å•Ÿç·¨è¼¯å™¨ã€‚" #: editor/editor_node.cpp editor/project_settings_editor.cpp #: editor/settings_config_dialog.cpp -#, fuzzy msgid "Save & Restart" -msgstr "å¦å˜æ–°æª”" +msgstr "儲å˜ä¸¦é‡å•Ÿ" #: editor/editor_node.cpp msgid "Spins when the editor window repaints!" -msgstr "" +msgstr "åœ¨é‡æ–°ç¹ªè£½(repaint)編輯器視窗時,來個旋轉ï¼" #: 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 editor/plugins/asset_library_editor_plugin.cpp #: editor/project_manager.cpp msgid "Import" -msgstr "" +msgstr "å°Žå…¥" #: editor/editor_node.cpp msgid "FileSystem" -msgstr "" +msgstr "文件系統" #: editor/editor_node.cpp msgid "Inspector" -msgstr "" +msgstr "å±¬æ€§é¢æ¿" #: editor/editor_node.cpp #, fuzzy @@ -2421,96 +2431,95 @@ msgstr "節點" #: editor/editor_node.cpp msgid "Expand Bottom Panel" -msgstr "" +msgstr "å±•é–‹åº•éƒ¨é¢æ¿" #: editor/editor_node.cpp scene/resources/visual_shader.cpp msgid "Output" -msgstr "" +msgstr "輸出(output)" #: 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 "開啟2D編輯器" #: editor/editor_node.cpp msgid "Open 3D Editor" -msgstr "" +msgstr "開啟3D編輯器" #: editor/editor_node.cpp msgid "Open Script Editor" -msgstr "" +msgstr "開啟腳本編輯器" #: editor/editor_node.cpp editor/project_manager.cpp msgid "Open Asset Library" -msgstr "" +msgstr "é–‹å•Ÿç´ æå€‰åº«" #: editor/editor_node.cpp -#, fuzzy 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" -msgstr "" +msgstr "å‰µå»ºç¶²æ ¼é 覽" #: editor/editor_plugin.cpp msgid "Thumbnail..." -msgstr "" +msgstr "縮圖…" #: editor/editor_plugin_settings.cpp msgid "Edit Plugin" -msgstr "" +msgstr "編輯擴充功能" #: editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "" +msgstr "已安è£çš„æ“´å……功能:" #: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp msgid "Update" -msgstr "" +msgstr "æ›´æ–°" #: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp #: editor/plugins/asset_library_editor_plugin.cpp @@ -3333,6 +3342,19 @@ msgstr "" msgid "Reimport" msgstr "" +#: editor/import_dock.cpp +msgid "Save scenes, re-import and restart" +msgstr "" + +#: editor/import_dock.cpp +msgid "Changing the type of an imported file requires editor restart." +msgstr "" + +#: editor/import_dock.cpp +msgid "" +"WARNING: Assets exist that use this resource, they may stop loading properly." +msgstr "" + #: editor/inspector_dock.cpp msgid "Failed to load resource." msgstr "" @@ -4304,6 +4326,16 @@ msgid "Move CanvasItem" msgstr "" #: editor/plugins/canvas_item_editor_plugin.cpp +msgid "Presets for the anchors and margins values of a Control node." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Children of containers have their anchors and margins values overridden by " +"their parent." +msgstr "" + +#: editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchors only" msgstr "" @@ -6344,7 +6376,7 @@ msgid "Post" msgstr "" #: editor/plugins/spatial_editor_plugin.cpp -msgid "Name-less gizmo" +msgid "Nameless gizmo" msgstr "" #: editor/plugins/sprite_editor_plugin.cpp @@ -6424,8 +6456,14 @@ msgid "(empty)" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animations" -msgstr "" +#, fuzzy +msgid "Animations:" +msgstr "動畫空間。" + +#: editor/plugins/sprite_frames_editor_plugin.cpp +#, fuzzy +msgid "New Animation" +msgstr "動畫最佳化" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Speed (FPS):" @@ -6436,8 +6474,9 @@ msgid "Loop" msgstr "" #: editor/plugins/sprite_frames_editor_plugin.cpp -msgid "Animation Frames" -msgstr "" +#, fuzzy +msgid "Animation Frames:" +msgstr "動畫空間。" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Insert Empty (Before)" @@ -7213,6 +7252,38 @@ msgid "Browse" msgstr "" #: editor/project_manager.cpp +msgid "Renderer:" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 3.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Higher visual quality\n" +"All features available\n" +"Incompatible with older hardware\n" +"Not recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "OpenGL ES 2.0" +msgstr "" + +#: editor/project_manager.cpp +msgid "" +"Lower visual quality\n" +"Some features not available\n" +"Works on most hardware\n" +"Recommended for web games" +msgstr "" + +#: editor/project_manager.cpp +msgid "Renderer can be changed later, but scenes may need to be adjusted." +msgstr "" + +#: editor/project_manager.cpp msgid "Unnamed Project" msgstr "" @@ -7227,6 +7298,19 @@ msgstr "" #: editor/project_manager.cpp msgid "" +"The following project settings file does not specify the version of Godot " +"through which it was created.\n" +"\n" +"%s\n" +"\n" +"If you proceed with opening it, it will be converted to Godot's current " +"configuration file format.\n" +"Warning: You will not be able to open the project with previous versions of " +"the engine anymore." +msgstr "" + +#: editor/project_manager.cpp +msgid "" "The following project settings file was generated by an older engine " "version, and needs to be converted for this version:\n" "\n" @@ -7921,6 +8005,18 @@ msgid "Duplicate Node(s)" msgstr "" #: editor/scene_tree_dock.cpp +msgid "Can't reparent nodes in inherited scenes, order of nodes can't change." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Node must belong to the edited scene to become root." +msgstr "" + +#: editor/scene_tree_dock.cpp +msgid "Instantiated scenes can't become root" +msgstr "" + +#: editor/scene_tree_dock.cpp msgid "Delete Node(s)?" msgstr "" @@ -8754,10 +8850,6 @@ msgid "Build Project" msgstr "專案è¨å®š" #: modules/mono/editor/mono_bottom_panel.cpp -msgid "Warnings" -msgstr "" - -#: modules/mono/editor/mono_bottom_panel.cpp #, fuzzy msgid "View log" msgstr "éŽæ¿¾æª”案..." @@ -9155,6 +9247,89 @@ msgstr "" msgid "Set %s" msgstr "" +#: platform/android/export/export.cpp +msgid "Package name is missing." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Package segments must be of non-zero length." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' is not allowed in Android application package names." +msgstr "" + +#: platform/android/export/export.cpp +msgid "A digit cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The character '%s' cannot be the first character in a package segment." +msgstr "" + +#: platform/android/export/export.cpp +msgid "The package must have at least one '.' separator." +msgstr "" + +#: platform/android/export/export.cpp +msgid "ADB executable not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "OpenJDK jarsigner not configured in the Editor Settings." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Debug keystore not configured in the Editor Settings nor in the preset." +msgstr "" + +#: platform/android/export/export.cpp +msgid "Invalid public key for APK expansion." +msgstr "" + +#: platform/android/export/export.cpp +#, fuzzy +msgid "Invalid package name:" +msgstr "ä¸èƒ½ä½¿ç”¨çš„å稱。" + +#: platform/iphone/export/export.cpp +msgid "Identifier is missing." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "Identifier segments must be of non-zero length." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The character '%s' is not allowed in Identifier." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "A digit cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "" +"The character '%s' cannot be the first character in a Identifier segment." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "The Identifier must have at least one '.' separator." +msgstr "" + +#: platform/iphone/export/export.cpp +msgid "App Store Team ID not specified - cannot configure the project." +msgstr "" + +#: platform/iphone/export/export.cpp +#, fuzzy +msgid "Invalid Identifier:" +msgstr "無效的å—體大å°ã€‚" + +#: platform/iphone/export/export.cpp +msgid "Required icon is not specified in the preset." +msgstr "" + #: platform/javascript/export/export.cpp msgid "Run in Browser" msgstr "" @@ -9192,6 +9367,54 @@ msgstr "無法新增資料夾" msgid "Using default boot splash image." msgstr "無法新增資料夾" +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid package unique name." +msgstr "ä¸èƒ½ä½¿ç”¨çš„å稱。" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid product GUID." +msgstr "ä¸èƒ½ä½¿ç”¨çš„å稱。" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid publisher GUID." +msgstr "無效的路徑" + +#: platform/uwp/export/export.cpp +#, fuzzy +msgid "Invalid background color." +msgstr "ä¸èƒ½ä½¿ç”¨çš„å稱。" + +#: platform/uwp/export/export.cpp +msgid "Invalid Store Logo image dimensions (should be 50x50)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 44x44 logo image dimensions (should be 44x44)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 71x71 logo image dimensions (should be 71x71)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 150x150 logo image dimensions (should be 150x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid square 310x310 logo image dimensions (should be 310x310)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)." +msgstr "" + +#: platform/uwp/export/export.cpp +msgid "Invalid splash screen image dimensions (should be 620x300)." +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -9279,6 +9502,13 @@ msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" +#: scene/2d/particles_2d.cpp +msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles2D node instead. You can use the \"Convert to " +"CPUParticles\" option for this purpose." +msgstr "" + #: scene/2d/particles_2d.cpp scene/3d/particles.cpp msgid "" "A material to process the particles is not assigned, so no behavior is " @@ -9434,6 +9664,13 @@ msgstr "" #: scene/3d/particles.cpp msgid "" +"GPU-based particles are not supported by the GLES2 video driver.\n" +"Use the CPUParticles node instead. You can use the \"Convert to CPUParticles" +"\" option for this purpose." +msgstr "" + +#: scene/3d/particles.cpp +msgid "" "Nothing is visible because meshes have not been assigned to draw passes." msgstr "" @@ -9448,13 +9685,9 @@ msgid "PathFollow only works when set as a child of a Path node." msgstr "" #: scene/3d/path.cpp -msgid "OrientedPathFollow only works when set as a child of a Path node." -msgstr "" - -#: scene/3d/path.cpp msgid "" -"OrientedPathFollow requires \"Up Vector\" enabled in its parent Path's Curve " -"resource." +"PathFollow ROTATION_ORIENTED requires \"Up Vector\" enabled in its parent " +"Path's Curve resource." msgstr "" #: scene/3d/physics_body.cpp @@ -9551,10 +9784,18 @@ msgid "This node has been deprecated. Use AnimationTree instead." msgstr "" #: scene/gui/color_picker.cpp +msgid "Pick a color from the screen." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Raw Mode" msgstr "" #: scene/gui/color_picker.cpp +msgid "Switch between hexadecimal and code values." +msgstr "" + +#: scene/gui/color_picker.cpp msgid "Add current color as a preset" msgstr "將目å‰é¡è‰²è¨ç‚ºé è¨" @@ -9641,15 +9882,17 @@ msgstr "" msgid "Varyings can only be assigned in vertex function." msgstr "" +#~ msgid "Line:" +#~ msgstr "行:" + +#~ msgid "Col:" +#~ msgstr "列:" + #, fuzzy #~ msgid "Split already exists." #~ msgstr "Autoload「%sã€å·²ç¶“å˜åœ¨!" #, fuzzy -#~ msgid "Invalid Split: " -#~ msgstr "無效的路徑" - -#, fuzzy #~ msgid "Remove Split" #~ msgstr "移除" diff --git a/main/gamecontrollerdb.txt b/main/gamecontrollerdb.txt index 2bbee0283a..cb32b4209f 100644 --- a/main/gamecontrollerdb.txt +++ b/main/gamecontrollerdb.txt @@ -1,28 +1,54 @@ -# Game Controller DB for SDL in 2.0.6+ format +# Game Controller DB for SDL in 2.0.9 format # Source: https://github.com/gabomdq/SDL_GameControllerDB # Windows 03000000fa2d00000100000000000000,3DRUDDER,leftx:a0,lefty:a1,rightx:a5,righty:a2,platform:Windows, +03000000c82d00002038000000000000,8bitdo,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, 03000000022000000090000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, 03000000203800000900000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, 03000000c82d00000060000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, -03000000c82d00000061000000000000,8Bitdo SF30 Pro Wireless,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, +03000000c82d00000061000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows, 03000000102800000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows, 03000000a00500003232000000000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows, -030000008f0e00001200000000000000,Acme,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +030000008f0e00001200000000000000,Acme GA-02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000fa190000f0ff000000000000,Acteck AGJ-3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000263000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001101000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001401000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001402000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001901000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001a01000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d62000001d57000000000000,Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d6200000e557000000000000,Batarang,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,platform:Windows, -030000006b1400000055000000000000,bigben ps3padstreetnew,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000000055000000000000,Betop BFM Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000bc2000006312000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000bc2000006412000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000555000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000655000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000790000000700000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000808300000300000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +030000006b1400000055000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000006b1400000103000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, 0300000066f700000500000000000000,BrutalLegendTest,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, 03000000d81d00000b00000000000000,BUFFALO BSGP1601 Series ,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows, 03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, -030000005e040000a102000000000000,Controller (Xbox 360 Wireless Receiver for Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 030000005e0400008e02000000000000,Controller (XBOX 360 For Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +030000005e040000a102000000000000,Controller (Xbox 360 Wireless Receiver for Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Windows, 03000000a306000022f6000000000000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, 03000000791d00000103000000000000,Dual Box WII,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, -030000004f04000023b3000000000000,Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000bd12000002e0000000000000,Dual USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows, +030000006f0e00003001000000000000,EA SPORTS PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000b80500000410000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +03000000b80500000610000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, 03000000341a00000108000000000000,EXEQ RF USB Gamepad 8206,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000852100000201000000000000,FF-GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00008500000000000000,Fighting Commander 2016 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00008400000000000000,Fighting Commander 5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00008700000000000000,Fighting Stick mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, @@ -30,68 +56,113 @@ 030000000d0f00002700000000000000,FIGHTING STICK V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, 78696e70757403000000000000000000,Fightstick TES,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Windows, 03000000790000000600000000000000,G-Shark GS-GP702,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000790000002201000000000000,Game Controller for PC,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +0300000066f700000100000000000000,Game VIB Joystick,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows, 03000000260900002625000000000000,Gamecube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Windows, 030000008f0e00000d31000000000000,GAMEPAD 3 TURBO,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000280400000140000000000000,GamePad Pro USB,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000ac0500003d03000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000ac0500004d04000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000ffff00000000000000000000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, -03000000451300000010000000000000,Generic USB Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000008305000009a0000000000000,Genius,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000008305000031b0000000000000,Genius Maxfire Blaze 3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000451300000010000000000000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000005c1a00003330000000000000,Genius MaxFire Grandias 12V,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows, +03000000300f00000b01000000000000,GGE909 Recoil Pad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c283000000000000,Gioteck,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f025000021c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c383000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c483000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000341a00000302000000000000,Hama Scorpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00004900000000000000,Hatsune Miku Sho Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000d81400000862000000000000,HitBox Edition Cthulhu+,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +03000000632500002605000000000000,HJD-X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 030000000d0f00005f00000000000000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00005e00000000000000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00004000000000000000,Hori Fighting Stick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005400000000000000,Hori Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00004d00000000000000,Hori Pad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000c100000000000000,Horipad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006e00000000000000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006600000000000000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f0000ee00000000000000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -030000000d0f00004d00000000000000,HORIPAD3 A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000250900000017000000000000,HRAP2 on PS/SS/N64 Joypad to USB BOX,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,platform:Windows, 030000008f0e00001330000000000000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,platform:Windows, 03000000d81d00000f00000000000000,iBUFFALO BSGP1204 Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000d81d00001000000000000000,iBUFFALO BSGP1204P Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000830500006020000000000000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Windows, -03000000b50700001403000000000000,IMPACT BLACK,a:b2,b:b3,back:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, -030000006f0e00002401000000000000,INJUSTICE FightStick for PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000b50700001403000000000000,Impact Black,a:b2,b:b3,back:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +030000006f0e00002401000000000000,INJUSTICE FightStick PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000ac0500002c02000000000000,IPEGA,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000491900000204000000000000,Ipega PG-9023,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +030000006e0500000520000000000000,JC-P301U,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000320000000000000,JC-U3613M (DInput),a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows, +030000006e0500000720000000000000,JC-W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows, +030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows, +030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, +03000000790000000200000000000000,King PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006d040000d2ca000000000000,Logitech Cordless Precision,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000006d04000011c2000000000000,Logitech Cordless Wingman,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,platform:Windows, 030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000006d04000018c2000000000000,Logitech F510 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000006d04000019c2000000000000,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006652000000000000,Mad Catz C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, 03000000380700005032000000000000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000380700005082000000000000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000380700008433000000000000,Mad Catz FightStick TE S+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, -03000000380700008483000000000000,Mad Catz FightStick TE S+ PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b6,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008433000000000000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008483000000000000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000380700008134000000000000,Mad Catz FightStick TE2+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000380700008184000000000000,Mad Catz FightStick TE2+ PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006252000000000000,Mad Catz Micro C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, 03000000380700008034000000000000,Mad Catz TE2 PS3 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000380700008532000000000000,Madcatz Arcade Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000380700003888000000000000,Madcatz Arcade Fightstick TE S+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000380700001888000000000000,MadCatz SFIV FightStick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, 03000000380700008081000000000000,MADCATZ SFV Arcade FightStick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -030000008305000031b0000000000000,MaxfireBlaze3,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000002a0600001024000000000000,Matricom,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, 03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,platform:Windows, 03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, 03000000790000004318000000000000,Mayflash GameCube Controller Adapter,a:b1,b:b2,back:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b0,leftshoulder:b4,leftstick:b0,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b0,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows, 030000008f0e00001030000000000000,Mayflash USB Adapter for original Sega Saturn controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,rightshoulder:b2,righttrigger:b7,start:b9,x:b3,y:b4,platform:Windows, 0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, 03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000380700006382000000000000,MLG GamePad PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000efbe0000edfe000000000000,Monect Virtual Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows, 03000000250900006688000000000000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, 030000001008000001e5000000000000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,platform:Windows, +03000000152000000182000000000000,NGDS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows, 03000000bd12000015d0000000000000,Nintendo Retrolink USB Super SNES Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows, 030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000000d0500000308000000000000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Windows, 030000004b120000014d000000000000,NYKO AIRFLO,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a3,leftstick:a0,lefttrigger:b6,rightshoulder:b5,rightstick:a2,righttrigger:b7,start:b9,x:b2,y:b3,platform:Windows, +03000000782300000a10000000000000,Onlive Wireless Controller,a:b15,b:b14,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b11,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b13,y:b12,platform:Windows, +03000000d62000006d57000000000000,OPP PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b14000001a1000000000000,Orange Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, 03000000362800000100000000000000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,x:b1,y:b2,platform:Windows, 03000000120c0000f60e000000000000,P4 Wired Gamepad,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b7,rightshoulder:b4,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows, 030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, 03000000d62000006dca000000000000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -030000008f0e00007530000000000000,PS (R) Gamepad,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b1,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d62000009557000000000000,Pro Elite PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d62000009f31000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000d6200000c757000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000632500002306000000000000,PS Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, 03000000e30500009605000000000000,PS to USB convert cable,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, -03000000100800000100000000000000,PS1 USB,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, -03000000100800000300000000000000,PS2 USB,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, -030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows, +03000000100800000100000000000000,PS1 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +030000008f0e00007530000000000000,PS1 Controller,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b1,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000100800000300000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000250900008888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000666600006706000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Windows, +030000006b1400000303000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000009d0d00001330000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000250900000500000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows, +030000004c0500006802000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b10,lefttrigger:a3~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:a4~,rightx:a2,righty:a5,start:b8,x:b3,y:b0,platform:Windows, +03000000632500007505000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, -03000000250900000500000000000000,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows, +030000008f0e00001431000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000003807000056a8000000000000,PS3 RF pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000100000008200000000000000,PS360+ v1.66,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:h0.4,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, 030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, @@ -104,6 +175,8 @@ 03000000222c00000223000000000000,Qanba Obsidian Arcade Joystick PS3 Mode,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000222c00000023000000000000,Qanba Obsidian Arcade Joystick PS4 Mode,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000321500000204000000000000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000104000000000000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00001100000000000000,REAL ARCADE PRO.3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, @@ -117,7 +190,9 @@ 0300000000f000000300000000000000,RetroUSB.com RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows, 0300000000f00000f100000000000000,RetroUSB.com Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows, 030000006b140000010d000000000000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -030000006f0e00001e01000000000000,Rock Candy Gamepad for PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00001e01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00002801000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000004f04000003d0000000000000,run'n'drive,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:a3,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:a4,rightstick:b11,righttrigger:b5,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000a30600001af5000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, 03000000a306000023f6000000000000,Saitek Cyborg V.1 Game pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, @@ -127,31 +202,54 @@ 03000000300f00001001000000000000,Saitek P480 Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, 03000000a30600000b04000000000000,Saitek P990,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows, 03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Windows, -03000000300f00001101000000000000,saitek rumble pad,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, +03000000a30600002106000000000000,Saitek PS1000,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000a306000020f6000000000000,Saitek PS2700,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000300f00001101000000000000,Saitek Rumble Pad,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, 0300000000050000289b000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, 030000009b2800000500000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, 03000000341a00000208000000000000,SL-6555-SBK,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,platform:Windows, -030000008f0e00000800000000000000,SpeedLink Strike FX Wireless,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000341a00000908000000000000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000008f0e00000800000000000000,SpeedLink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,platform:Windows, +03000000790000001c18000000000000,STK-7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000ff1100003133000000000000,SVEN X-PAD,a:b2,b:b3,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a4,start:b5,x:b0,y:b1,platform:Windows, +03000000d620000011a7000000000000,Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000004f04000007d0000000000000,T Mini Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000fa1900000706000000000000,Team 5,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000b50700001203000000000000,Techmobility X6-38V,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows, -030000004f04000015b3000000000000,Thrustmaster Dual Analog 2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000015b3000000000000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, +030000004f04000023b3000000000000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Windows, 030000004f04000004b3000000000000,Thrustmaster Firestorm Dual Power 3,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows, 03000000666600000488000000000000,TigerGame PS/PS2 Game Controller Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, +03000000d62000006000000000000000,Tournament PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000005f140000c501000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000d90400000200000000000000,TwinShock PS2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, -03000000380700006652000000000000,UnKnown,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, +03000000101c0000171c000000000000,uRage Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, +03000000300f00000701000000000000,USB 4-Axis 12-Button Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows, +03000000341a00002308000000000000,USB gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +030000005509000000b4000000000000,USB gamepad,a:b10,b:b11,back:b5,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,guide:b14,leftshoulder:b8,leftstick:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b4,x:b12,y:b13,platform:Windows, +030000006b1400000203000000000000,USB gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +03000000790000000a00000000000000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows, +03000000f0250000c183000000000000,USB gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000ff1100004133000000000000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows, 03000000632500002305000000000000,USB Vibration Joystick (BM),a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000790000001b18000000000000,Venom Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +03000000341a00000608000000000000,Xeox,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, 03000000450c00002043000000000000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, 03000000172700004431000000000000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, 03000000786901006e70000000000000,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, +03000000790000004f18000000000000,ZD-T Android,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, # Mac OS X +030000008f0e00000300000009010000,2In1 USB Joystick,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, 03000000022000000090000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, -03000000c82d00000190000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, 03000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, +03000000c82d00000190000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X, 03000000102800000900000000000000,8Bitdo SFC30 GamePad Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, 03000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, 03000000a00500003232000009010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X, @@ -169,19 +267,24 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000000d0f00006e00000000010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00006600000000010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00006600000000000000,HORIPAD FPS PLUS 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f0000ee00000000010000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 030000008f0e00001330000011010000,HuiJia SNES Controller,a:b4,b:b2,back:b16,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b12,rightshoulder:b14,start:b18,x:b6,y:b0,platform:Mac OS X, 03000000830500006020000000010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X, 03000000830500006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X, -030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Mac OS X, +030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Mac OS X, +030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Mac OS X, 030000006d04000016c2000000020000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d04000016c2000000030000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d04000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d04000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d0400001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000006d04000018c2000000010000,Logitech RumblePad 2 USB,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X, 030000006d04000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000380700005032000000010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000380700005082000000010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700008433000000010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700008483000000010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Mac OS X, 0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Mac OS X, 03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X, @@ -197,6 +300,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 030000008916000000fd000000000000,Razer Onza TE,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +03000000321500000204000000010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000104000000010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000321500000010000000010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, 03000000790000001100000000000000,Retrolink Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a3,lefty:a4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X, @@ -208,7 +313,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, 030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 030000004c050000a00b000000000000,Sony DualShock 4 Wireless Adaptor,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, -030000005e0400008e02000001000000,Steam Virtual GamePad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +030000005e0400008e02000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, 03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b12,x:b2,y:b3,platform:Mac OS X, 03000000110100002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, 03000000381000002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, @@ -237,16 +342,18 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000022000000090000011010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 05000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 05000000c82d00002038000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, -05000000c82d00000061000000010000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 03000000c82d00000190000011010000,8Bitdo NES30 Pro 8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, +05000000c82d00000061000000010000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 05000000102800000900000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, 05000000c82d00003028000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux, 05000000a00500003232000001000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, 05000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux, -030000006f0e00003901000000430000,Afterglow Prismatic Wired Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -030000006f0e00003901000020060000,Afterglow Wired Controller for Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001302000000010000,Afterglow,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003901000020060000,Afterglow Controller for Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00003901000000430000,Afterglow Prismatic Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000100000008200000011010000,Akishop Customs PS360+ v1.66,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, 05000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux, +03000000120c00000500000010010000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux, 03000000666600006706000000010000,boom PSX to PC Converter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Linux, 03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Linux, @@ -255,15 +362,14 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux, 030000006f0e00003001000001010000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +03000000bc2000000055000011010000,GameSir G3w,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000006f0e00001304000000010000,Generic X-Box pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:a0,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:a3,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -030000006f0e00001f01000000010000,Generic X-Box pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 0300000079000000d418000000010000,GPD Win 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000280400000140000000010000,Gravis GamePad Pro USB ,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, 030000008f0e00000610000000010000,GreenAsia Electronics 4Axes 12Keys GamePad ,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Linux, -030000008f0e00000300000010010000,GreenAsia Inc. USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, 030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, 0500000047532067616d657061640000,GS gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 06000000adde0000efbe000002010000,Hidromancer Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -279,6 +385,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000000d0f00006e00000011010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000000d0f00006600000011010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f0000ee00000011010000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000000d0f00006700000001010000,HORIPAD ONE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000008f0e00001330000010010000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,platform:Linux, 03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux, @@ -289,6 +396,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux, 03000000300f00001001000010010000,Jess Tech Dual Analog Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux, 03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux, +030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux, 030000006f0e00000103000000020000,Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, @@ -297,6 +406,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d0400000ac2000010010000,Logitech Inc. WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Linux, 030000006d04000015c2000010010000,Logitech Logitech Extreme 3D,a:b0,b:b4,back:b6,guide:b8,leftshoulder:b9,leftstick:h0.8,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:h0.2,start:b7,x:b2,y:b5,platform:Linux, 030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,platform:Linux, @@ -306,26 +416,30 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, 03000000380700008034000011010000,Mad Catz fightstick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000380700008084000011010000,Mad Catz fightstick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, -03000000380700008433000011010000,Mad Catz FightStick TE S+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -03000000380700008483000011010000,Mad Catz FightStick TE S+ PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008433000011010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008483000011010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 03000000380700001647000010040000,Mad Catz Wired Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000380700003847000090040000,Mad Catz Wired Xbox 360 Controller (SFIV),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000380700001888000010010000,MadCatz PC USB Wired Stick 8818,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000380700003888000010010000,MadCatz PC USB Wired Stick 8838,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 0300000079000000d218000011010000,MAGIC-NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000120c00000500000000010000,Manta Dualshock 2,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, 03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux, +0300000025090000e803000001010000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, 03000000780000000600000010010000,Microntek USB Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, 030000005e0400000e00000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux, 030000005e0400008e02000004010000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e0400008e02000062230000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e040000e302000003020000,Microsoft X-Box One Elite pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e040000d102000001010000,Microsoft X-Box One pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000dd02000003020000,Microsoft X-Box One pad (Firmware 2015),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e040000d102000003020000,Microsoft X-Box One pad v2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e0400008502000000010000,Microsoft X-Box pad (Japan),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, 030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux, 05000000d6200000ad0d000001000000,Moga Pro,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux, 03000000250900006688000000010000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +030000000d0f00000900000010010000,Natec Genesis P44,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,platform:Linux, 050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 050000007e0500003003000001000000,Nintendo Wii Remote Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux, @@ -338,6 +452,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux, 03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c62400000053000000010000,PowerA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000d62000006dca000011010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, 03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, @@ -345,36 +460,44 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000004c0500006802000010810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, 030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000006f0e00001402000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000008f0e00000300000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 050000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +050000004c0500006802000000800000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, -050000004c0500006802000000800000,PS3 Controller (Bluetooth),a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, -05000000504c415953544154494f4e00,PS3 Controller (Bluetooth),a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, -060000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, 030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, +050000004c050000cc09000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 03000000300f00001211000011010000,QanBa Arcade JoyStick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,platform:Linux, 030000009b2800000300000001010000,raphnet.net 4nes4snes v1.5,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux, 030000008916000001fd000024010000,Razer Onza Classic Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, -030000008916000000fd000024010000,Razer Onza Tournament,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000008916000000fd000024010000,Razer Onza Tournament Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000321500000204000011010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000104000011010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 03000000321500000010000011010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000321500000009000011010000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, 050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, 0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000790000001100000010010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, -0300000000f000000300000000010000,RetroUSB.com RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, -0300000000f00000f100000000010000,RetroUSB.com Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, +0300000000f000000300000000010000,RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, 030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, -030000006f0e00001e01000011010000,Rock Candy Gamepad for PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -030000006f0e00004601000001010000,Rock Candy Wired Controller for Xbox One,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001f01000000010000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006f0e00001e01000011010000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00004601000001010000,Rock Candy Xbox One Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, 03000000a30600000cff000010010000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,platform:Linux, 03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,platform:Linux, @@ -384,28 +507,36 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000c01600008704000011010000,Serial/Keyboard/Mouse/Joystick,a:b12,b:b10,back:b4,dpdown:b2,dpleft:b3,dpright:b1,dpup:b0,leftshoulder:b9,leftstick:b14,lefttrigger:b6,leftx:a1,lefty:a0,rightshoulder:b8,rightstick:b15,righttrigger:b7,rightx:a2,righty:a3,start:b5,x:b13,y:b11,platform:Linux, 03000000f025000021c1000010010000,ShanWan Gioteck PS3 Wired Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 03000000632500007505000010010000,SHANWAN PS3/PC Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000632500002305000010010000,ShanWan USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, +03000000341a00000908000010010000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, 030000005e0400008e02000073050000,Speedlink TORID Wireless Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000de2800000112000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, 03000000de2800000211000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, 03000000de2800004211000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, -03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 05000000de2800000212000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, 05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux, 03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000ad1b000038f0000090040000,Street Fighter IV FightStick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000666600000488000000010000,Super Joy Box 5 Pro,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, +0300000000f00000f100000000010000,Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux, 030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, 030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, 030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Linux, +030000004f04000026b3000002040000,Thrustmaster Gamepad GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000c6240000025b000002020000,Thrustmaster GPX Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000004f04000012b3000010010000,Thrustmaster vibrating gamepad,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux, 03000000bd12000015d0000010010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux, 03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux, 03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, 03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +03000000790000000600000007010000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux, 03000000790000001100000000010000,USB Gamepad1,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux, 05000000ac0500003232000001000000,VR-BOX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, 030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -417,6 +548,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 0000000058626f782033363020576900,Xbox 360 Wireless Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux, 030000005e040000a102000014010000,Xbox 360 Wireless Receiver (XBOX),a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux, +030000005e040000ea02000001030000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 050000005e040000e002000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 050000005e040000fd02000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 03000000450c00002043000010010000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, @@ -426,16 +558,33 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000120c0000100e000011010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, # Android +05000000bc20000000550000ffff3f00,GameSir G3w,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +05000000d6020000e5890000dfff3f00,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, 64633436313965656664373634323364,Microsoft X-Box 360 pad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b17,y:b2,platform:Android, 37336435666338653565313731303834,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 4e564944494120436f72706f72617469,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 61363931656135336130663561616264,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005509000003720000cf7f3f00,NVIDIA Controller v01.01,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005509000010720000ffff3f00,NVIDIA Controller v01.03,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c05000068020000dfff3f00,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000004c050000c4050000fffe3f00,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000004c050000cc090000fffe3f00,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, 35643031303033326130316330353564,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +050000003215000000090000bf7f3f00,Razer Serval,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, 05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, 5477696e20555342204a6f7973746963,Twin USB Joystick,a:b22,b:b21,back:b28,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,leftstick:b30,lefttrigger:b24,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b31,righttrigger:b25,rightx:a3,righty:a2,start:b29,x:b23,y:b20,platform:Android, +050000005e040000e00200000ffe3f00,Xbox One Wireless Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android, +050000005e040000fd020000ffff3f00,Xbox One Wireless Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e04000091020000ff073f00,Xbox Wireless Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, 34356136633366613530316338376136,Xbox Wireless Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,x:b17,y:b2,platform:Android, # iOS +05000000ac0500000100000000006d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS, +05000000ac0500000200000000006d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS, 4d466947616d65706164010000000000,MFi Extended Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:iOS, 4d466947616d65706164020000000000,MFi Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:iOS, +05000000ac0500000300000000006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS, 05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, +05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS, diff --git a/main/main.cpp b/main/main.cpp index cbf30af38c..f9044b61cd 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1789,6 +1789,10 @@ uint64_t Main::target_ticks = 0; uint32_t Main::frames = 0; uint32_t Main::frame = 0; bool Main::force_redraw_requested = false; +int Main::iterating = 0; +bool Main::is_iterating() { + return iterating > 0; +} // For performance metrics static uint64_t physics_process_max = 0; @@ -1796,6 +1800,11 @@ static uint64_t idle_process_max = 0; bool Main::iteration() { + //for now do not error on this + //ERR_FAIL_COND_V(iterating, false); + + iterating++; + uint64_t ticks = OS::get_singleton()->get_ticks_usec(); Engine::get_singleton()->_frame_ticks = ticks; main_timer_sync.set_cpu_ticks_usec(ticks); @@ -1923,6 +1932,8 @@ bool Main::iteration() { frames = 0; } + iterating--; + if (fixed_fps != -1) return exit; diff --git a/main/main.h b/main/main.h index 01fc259a8a..694305526a 100644 --- a/main/main.h +++ b/main/main.h @@ -47,6 +47,7 @@ class Main { static uint32_t frames; static uint32_t frame; static bool force_redraw_requested; + static int iterating; public: static bool is_project_manager(); @@ -58,6 +59,8 @@ public: static bool iteration(); static void force_redraw(); + static bool is_iterating(); + static void cleanup(); }; diff --git a/main/tests/test_gdscript.cpp b/main/tests/test_gdscript.cpp index 60f9568fbd..27ff2addf3 100644 --- a/main/tests/test_gdscript.cpp +++ b/main/tests/test_gdscript.cpp @@ -911,11 +911,14 @@ MainLoop *test(TestType p_type) { List<String> cmdlargs = OS::get_singleton()->get_cmdline_args(); if (cmdlargs.empty()) { - //try editor! return NULL; } String test = cmdlargs.back()->get(); + if (!test.ends_with(".gd") && !test.ends_with(".gdc")) { + print_line("This test expects a path to a GDScript file as its last parameter. Got: " + test); + return NULL; + } FileAccess *fa = FileAccess::open(test, FileAccess::READ); diff --git a/main/tests/test_image.cpp b/main/tests/test_image.cpp deleted file mode 100644 index ee4f43bae0..0000000000 --- a/main/tests/test_image.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/*************************************************************************/ -/* test_image.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#include "test_image.h" - -#include "core/io/image_loader.h" -#include "core/math/math_funcs.h" -#include "core/os/main_loop.h" -#include "core/print_string.h" - -namespace TestImage { - -class TestMainLoop : public MainLoop { - - bool quit; - -public: - virtual void input_event(const Ref<InputEvent> &p_event) { - } - - virtual void init() { - - quit = false; - } - virtual bool iteration(float p_time) { - - return quit; - } - - virtual bool idle(float p_time) { - return quit; - } - - virtual void finish() { - } -}; - -MainLoop *test() { - - return memnew(TestMainLoop); -} -} // namespace TestImage diff --git a/main/tests/test_main.cpp b/main/tests/test_main.cpp index 49f5cc5a18..22f1d7319f 100644 --- a/main/tests/test_main.cpp +++ b/main/tests/test_main.cpp @@ -36,7 +36,6 @@ #include "test_astar.h" #include "test_gdscript.h" #include "test_gui.h" -#include "test_image.h" #include "test_math.h" #include "test_oa_hash_map.h" #include "test_ordered_hash_map.h" @@ -61,7 +60,6 @@ const char **tests_get_names() { "gd_parser", "gd_compiler", "gd_bytecode", - "image", "ordered_hash_map", "astar", NULL @@ -134,11 +132,6 @@ MainLoop *test_main(String p_test, const List<String> &p_args) { return TestGDScript::test(TestGDScript::TEST_BYTECODE); } - if (p_test == "image") { - - return TestImage::test(); - } - if (p_test == "ordered_hash_map") { return TestOrderedHashMap::test(); @@ -149,6 +142,7 @@ MainLoop *test_main(String p_test, const List<String> &p_args) { return TestAStar::test(); } + print_line("Unknown test: " + p_test); return NULL; } diff --git a/main/tests/test_math.cpp b/main/tests/test_math.cpp index a082abcaba..f341159079 100644 --- a/main/tests/test_math.cpp +++ b/main/tests/test_math.cpp @@ -30,9 +30,9 @@ #include "test_math.h" +#include "core/math/basis.h" #include "core/math/camera_matrix.h" #include "core/math/math_funcs.h" -#include "core/math/matrix3.h" #include "core/math/transform.h" #include "core/os/file_access.h" #include "core/os/keyboard.h" diff --git a/methods.py b/methods.py index f8fc6c64ef..42eac7ca75 100644 --- a/methods.py +++ b/methods.py @@ -61,14 +61,22 @@ def update_version(module_version_string=""): # NOTE: It is safe to generate this file here, since this is still executed serially fhash = open("core/version_hash.gen.h", "w") githash = "" - if os.path.isfile(".git/HEAD"): - head = open(".git/HEAD", "r").readline().strip() + gitfolder = ".git" + + if os.path.isfile(".git"): + module_folder = open(".git", "r").readline().strip() + if module_folder.startswith("gitdir: "): + gitfolder = module_folder[8:] + + if os.path.isfile(os.path.join(gitfolder, "HEAD")): + head = open(os.path.join(gitfolder, "HEAD"), "r").readline().strip() if head.startswith("ref: "): - head = ".git/" + head[5:] + head = os.path.join(gitfolder, head[5:]) if os.path.isfile(head): githash = open(head, "r").readline().strip() else: githash = head + fhash.write("#define VERSION_HASH \"" + githash + "\"") fhash.close() diff --git a/misc/dist/linux/godot.6 b/misc/dist/linux/godot.6 index e6fd1b9991..078f8bcf91 100644 --- a/misc/dist/linux/godot.6 +++ b/misc/dist/linux/godot.6 @@ -56,7 +56,7 @@ Remote filesystem (<host/IP>[:<port>] address). Password for remote filesystem. .TP \fB\-\-audio\-driver\fR <driver> -Audio driver ('PulseAudio', 'ALSA'). +Audio driver ('PulseAudio', 'ALSA', 'Dummy'). .TP \fB\-\-video\-driver\fR <driver> Video driver ('GLES3', 'GLES2'). @@ -133,7 +133,7 @@ Only parse for errors and quit (use with --script). \fB\-\-export\fR <target> Export the project using the given export target. Export only main pack if path ends with .pck or .zip. .TP -\fB\-\-export\-debug\fR +\fB\-\-export\-debug\fR <target> Like \-\-export, but use debug template. .TP \fB\-\-doctool\fR <path> @@ -149,7 +149,7 @@ Build the scripting solutions (e.g. for C# projects). Generate JSON dump of the Godot API for GDNative bindings. .TP \fB\-\-test\fR <test> -Run a unit test ('string', 'math', 'physics', 'physics_2d', 'render', 'oa_hash_map', 'gui', 'shaderlang', 'gd_tokenizer', 'gd_parser', 'gd_compiler', 'gd_bytecode', 'image', 'ordered_hash_map'). +Run a unit test ('string', 'math', 'physics', 'physics_2d', 'render', 'oa_hash_map', 'gui', 'shaderlang', 'gd_tokenizer', 'gd_parser', 'gd_compiler', 'gd_bytecode', 'ordered_hash_map', 'astar'). .SH FILES XDG_DATA_CONFIG/godot/ or ~/.config/godot/ .RS diff --git a/misc/dist/osx_tools.app/Contents/Info.plist b/misc/dist/osx_tools.app/Contents/Info.plist index 97d769c824..2d6fa4d059 100755 --- a/misc/dist/osx_tools.app/Contents/Info.plist +++ b/misc/dist/osx_tools.app/Contents/Info.plist @@ -19,11 +19,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>3.0</string> + <string>3.1</string> <key>CFBundleSignature</key> <string>godot</string> <key>CFBundleVersion</key> - <string>3.0</string> + <string>3.1</string> <key>NSHumanReadableCopyright</key> <string>© 2007-2019 Juan Linietsky, Ariel Manzur & Godot Engine contributors</string> <key>LSMinimumSystemVersion</key> diff --git a/misc/travis/android-tools-linux.sh b/misc/travis/android-tools-linux.sh index 830820b10b..fb6e2f0f9b 100755 --- a/misc/travis/android-tools-linux.sh +++ b/misc/travis/android-tools-linux.sh @@ -71,11 +71,11 @@ if [ ! -d $ANDROID_NDK_DIR ]; then fi echo "Installing: Android Tools ..." -#$ANDROID_SDK_DIR/tools/bin/sdkmanager --all +mkdir -p ~/.android && echo "count=0" > ~/.android/repositories.cfg yes | $ANDROID_SDK_DIR/tools/bin/sdkmanager --licenses > /dev/null -$ANDROID_SDK_DIR/tools/bin/sdkmanager 'tools' > /dev/null -$ANDROID_SDK_DIR/tools/bin/sdkmanager 'platform-tools' > /dev/null -$ANDROID_SDK_DIR/tools/bin/sdkmanager 'build-tools;28.0.1' > /dev/null +yes | $ANDROID_SDK_DIR/tools/bin/sdkmanager 'tools' > /dev/null +yes | $ANDROID_SDK_DIR/tools/bin/sdkmanager 'platform-tools' > /dev/null +yes | $ANDROID_SDK_DIR/tools/bin/sdkmanager 'build-tools;28.0.1' > /dev/null echo EXPORT_VAL="export ANDROID_HOME=$ANDROID_SDK_PATH" diff --git a/modules/bullet/SCsub b/modules/bullet/SCsub index 11ce18449b..7e714ba43f 100644 --- a/modules/bullet/SCsub +++ b/modules/bullet/SCsub @@ -187,6 +187,8 @@ if env['builtin_bullet']: thirdparty_sources = [thirdparty_dir + file for file in bullet2_src] env_bullet.Append(CPPPATH=[thirdparty_dir]) + # if env['target'] == "debug" or env['target'] == "release_debug": + # env_bullet.Append(CCFLAGS=['-DBT_DEBUG']) env_thirdparty = env_bullet.Clone() env_thirdparty.disable_warnings() diff --git a/modules/bullet/bullet_types_converter.h b/modules/bullet/bullet_types_converter.h index 57c3300b3d..ba36331d07 100644 --- a/modules/bullet/bullet_types_converter.h +++ b/modules/bullet/bullet_types_converter.h @@ -31,7 +31,7 @@ #ifndef BULLET_TYPES_CONVERTER_H #define BULLET_TYPES_CONVERTER_H -#include "core/math/matrix3.h" +#include "core/math/basis.h" #include "core/math/transform.h" #include "core/math/vector3.h" #include "core/typedefs.h" diff --git a/modules/bullet/rigid_body_bullet.cpp b/modules/bullet/rigid_body_bullet.cpp index 09177205b4..22f2214898 100644 --- a/modules/bullet/rigid_body_bullet.cpp +++ b/modules/bullet/rigid_body_bullet.cpp @@ -797,6 +797,9 @@ void RigidBodyBullet::set_transform__bullet(const btTransform &p_global_transfor btBody->setLinearVelocity((p_global_transform.getOrigin() - btBody->getWorldTransform().getOrigin()) / space->get_delta_time()); // The kinematic use MotionState class godotMotionState->moveBody(p_global_transform); + } else { + // Is necesasry to avoid wrong location on the rendering side on the next frame + godotMotionState->setWorldTransform(p_global_transform); } CollisionObjectBullet::set_transform__bullet(p_global_transform); } @@ -822,7 +825,8 @@ void RigidBodyBullet::reload_shapes() { // shapes incorrectly do not set the vector in calculateLocalIntertia. // Arbitrary zero is preferable to undefined behaviour. btVector3 inertia(0, 0, 0); - mainShape->calculateLocalInertia(mass, inertia); + if (EMPTY_SHAPE_PROXYTYPE != mainShape->getShapeType()) // Necessary to avoid assertion of the empty shape + mainShape->calculateLocalInertia(mass, inertia); btBody->setMassProps(mass, inertia); } btBody->updateInertiaTensor(); diff --git a/modules/bullet/space_bullet.cpp b/modules/bullet/space_bullet.cpp index ab841e4acf..6562b18b3c 100644 --- a/modules/bullet/space_bullet.cpp +++ b/modules/bullet/space_bullet.cpp @@ -678,11 +678,14 @@ void SpaceBullet::check_ghost_overlaps() { // For each overlapping for (i = ghostOverlaps.size() - 1; 0 <= i; --i) { + bool hasOverlap = false; btCollisionObject *overlapped_bt_co = ghostOverlaps[i]; RigidCollisionObjectBullet *otherObject = static_cast<RigidCollisionObjectBullet *>(overlapped_bt_co->getUserPointer()); - if (!area->is_transform_changed() && !otherObject->is_transform_changed()) - continue; + if (!area->is_transform_changed() && !otherObject->is_transform_changed()) { + hasOverlap = true; + goto collision_found; + } if (overlapped_bt_co->getUserIndex() == CollisionObjectBullet::TYPE_AREA) { if (!static_cast<AreaBullet *>(overlapped_bt_co->getUserPointer())->is_monitorable()) @@ -690,8 +693,6 @@ void SpaceBullet::check_ghost_overlaps() { } else if (overlapped_bt_co->getUserIndex() != CollisionObjectBullet::TYPE_RIGID_BODY) continue; - bool hasOverlap = false; - // For each area shape for (y = area->get_shape_count() - 1; 0 <= y; --y) { if (!area->get_bt_shape(y)->isConvex()) diff --git a/modules/csg/csg_shape.cpp b/modules/csg/csg_shape.cpp index a13f731c11..f62e6f5c40 100644 --- a/modules/csg/csg_shape.cpp +++ b/modules/csg/csg_shape.cpp @@ -575,6 +575,18 @@ void CSGShape::_validate_property(PropertyInfo &property) const { } } +Array CSGShape::get_meshes() const { + + if (root_mesh.is_valid()) { + Array arr; + arr.resize(2); + arr[0] = Transform(); + arr[1] = root_mesh; + return arr; + } + + return Array(); +} void CSGShape::_bind_methods() { ClassDB::bind_method(D_METHOD("_update_shape"), &CSGShape::_update_shape); @@ -604,6 +616,8 @@ void CSGShape::_bind_methods() { ClassDB::bind_method(D_METHOD("set_calculate_tangents", "enabled"), &CSGShape::set_calculate_tangents); ClassDB::bind_method(D_METHOD("is_calculating_tangents"), &CSGShape::is_calculating_tangents); + ClassDB::bind_method(D_METHOD("get_meshes"), &CSGShape::get_meshes); + ADD_PROPERTY(PropertyInfo(Variant::INT, "operation", PROPERTY_HINT_ENUM, "Union,Intersection,Subtraction"), "set_operation", "get_operation"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "snap", PROPERTY_HINT_RANGE, "0.0001,1,0.001"), "set_snap", "get_snap"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "calculate_tangents"), "set_calculate_tangents", "is_calculating_tangents"); diff --git a/modules/csg/csg_shape.h b/modules/csg/csg_shape.h index df503faf2e..1622fb3a15 100644 --- a/modules/csg/csg_shape.h +++ b/modules/csg/csg_shape.h @@ -116,6 +116,8 @@ protected: virtual void _validate_property(PropertyInfo &property) const; + Array get_meshes() const; + public: void set_operation(Operation p_operation); Operation get_operation() const; diff --git a/modules/csg/doc_classes/CSGShape.xml b/modules/csg/doc_classes/CSGShape.xml index 56087cbb82..d304d0179f 100644 --- a/modules/csg/doc_classes/CSGShape.xml +++ b/modules/csg/doc_classes/CSGShape.xml @@ -29,6 +29,12 @@ Returns an individual bit on the collision mask. </description> </method> + <method name="get_meshes" qualifiers="const"> + <return type="Array"> + </return> + <description> + </description> + </method> <method name="is_root_shape" qualifiers="const"> <return type="bool"> </return> diff --git a/modules/gdnative/gdnative/basis.cpp b/modules/gdnative/gdnative/basis.cpp index 4441a03ca1..d77c7d91ac 100644 --- a/modules/gdnative/gdnative/basis.cpp +++ b/modules/gdnative/gdnative/basis.cpp @@ -30,7 +30,7 @@ #include "gdnative/basis.h" -#include "core/math/matrix3.h" +#include "core/math/basis.h" #include "core/variant.h" #ifdef __cplusplus diff --git a/modules/gdnative/gdnative/variant.cpp b/modules/gdnative/gdnative/variant.cpp index 491abbde9e..8f0d5a2db4 100644 --- a/modules/gdnative/gdnative/variant.cpp +++ b/modules/gdnative/gdnative/variant.cpp @@ -37,8 +37,22 @@ extern "C" { #endif +// Workaround GCC ICE on armv7hl which was affected GCC 6.0 up to 8.0 (GH-16100). +// It was fixed upstream in 8.1, and a fix was backported to 7.4. +// This can be removed once no supported distro ships with versions older than 7.4. +#if defined(__arm__) && defined(__GNUC__) && !defined(__clang__) && \ + (__GNUC__ == 6 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4) || (__GNUC__ == 8 && __GNUC_MINOR__ < 1)) +#pragma GCC push_options +#pragma GCC optimize("-O0") +#endif + #define memnew_placement_custom(m_placement, m_class, m_constr) _post_initialize(new (m_placement, sizeof(m_class), "") m_constr) +#if defined(__arm__) && defined(__GNUC__) && !defined(__clang__) && \ + (__GNUC__ == 6 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4) || (__GNUC__ == 8 && __GNUC_MINOR__ < 1)) +#pragma GCC pop_options +#endif + // Constructors godot_variant_type GDAPI godot_variant_get_type(const godot_variant *p_self) { diff --git a/modules/gdnative/gdnative_builders.py b/modules/gdnative/gdnative_builders.py index cd356ce513..5fd5971fd1 100644 --- a/modules/gdnative/gdnative_builders.py +++ b/modules/gdnative/gdnative_builders.py @@ -213,7 +213,7 @@ def _build_gdnative_api_struct_source(api): 'extern const godot_gdnative_core_api_struct api_struct = {', '\tGDNATIVE_' + api['core']['type'] + ',', '\t{' + str(api['core']['version']['major']) + ', ' + str(api['core']['version']['minor']) + '},', - '\tNULL,', + '\t(const godot_gdnative_api_struct *)&api_1_1,', '\t' + str(len(api['extensions'])) + ',', '\tgdnative_extensions_pointers,', ] diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index 9d263aa5e1..6d85eb3c90 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -223,16 +223,21 @@ void GDScript::_placeholder_erased(PlaceHolderScriptInstance *p_placeholder) { void GDScript::get_script_method_list(List<MethodInfo> *p_list) const { - for (const Map<StringName, GDScriptFunction *>::Element *E = member_functions.front(); E; E = E->next()) { - GDScriptFunction *func = E->get(); - MethodInfo mi; - mi.name = E->key(); - for (int i = 0; i < func->get_argument_count(); i++) { - mi.arguments.push_back(func->get_argument_type(i)); + const GDScript *current = this; + while (current) { + for (const Map<StringName, GDScriptFunction *>::Element *E = member_functions.front(); E; E = E->next()) { + GDScriptFunction *func = E->get(); + MethodInfo mi; + mi.name = E->key(); + for (int i = 0; i < func->get_argument_count(); i++) { + mi.arguments.push_back(func->get_argument_type(i)); + } + + mi.return_val = func->get_return_type(); + p_list->push_back(mi); } - mi.return_val = func->get_return_type(); - p_list->push_back(mi); + current = current->_base; } } @@ -642,7 +647,8 @@ Variant GDScript::call(const StringName &p_method, const Variant **p_args, int p if (E) { if (!E->get()->is_static()) { - WARN_PRINT(String("Can't call non-static function: '" + String(p_method) + "' in script.").utf8().get_data()); + ERR_EXPLAIN("Can't call non-static function: '" + String(p_method) + "' in script."); + ERR_FAIL_V(Variant()); } return E->get()->call(NULL, p_args, p_argcount, r_error); diff --git a/modules/gdscript/gdscript_function.cpp b/modules/gdscript/gdscript_function.cpp index 966c02d4ec..98871ddec3 100644 --- a/modules/gdscript/gdscript_function.cpp +++ b/modules/gdscript/gdscript_function.cpp @@ -1083,7 +1083,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a if (argc >= 1) { methodstr = String(*argptrs[0]) + " (via call)"; if (err.error == Variant::CallError::CALL_ERROR_INVALID_ARGUMENT) { - err.argument -= 1; + err.argument += 1; } } } else if (methodstr == "free") { diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index a012ccad30..7334e8a8cc 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -811,6 +811,21 @@ GDScriptParser::Node *GDScriptParser::_parse_expression(Node *p_parent, bool p_s expr = constant; bfn = true; } + + // Check parents for the constant + if (!bfn && cln->extends_file != StringName()) { + Ref<GDScript> parent = ResourceLoader::load(cln->extends_file); + if (parent.is_valid() && parent->is_valid()) { + Map<StringName, Variant> parent_constants; + parent->get_constants(&parent_constants); + if (parent_constants.has(identifier)) { + ConstantNode *constant = alloc_node<ConstantNode>(); + constant->value = parent_constants[identifier]; + expr = constant; + bfn = true; + } + } + } } if (!bfn) { @@ -3479,16 +3494,20 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { tokenizer->advance(); if ((tokenizer->get_token() == GDScriptTokenizer::TK_CONSTANT && tokenizer->get_token_constant().get_type() == Variant::STRING)) { - Variant constant = tokenizer->get_token_constant(); - String icon_path = constant.operator String(); +#ifdef TOOLS_ENABLED + if (Engine::get_singleton()->is_editor_hint()) { + Variant constant = tokenizer->get_token_constant(); + String icon_path = constant.operator String(); - String abs_icon_path = icon_path.is_rel_path() ? self_path.get_base_dir().plus_file(icon_path).simplify_path() : icon_path; - if (!FileAccess::exists(abs_icon_path)) { - _set_error("No class icon found at: " + abs_icon_path); - return; - } + String abs_icon_path = icon_path.is_rel_path() ? self_path.get_base_dir().plus_file(icon_path).simplify_path() : icon_path; + if (!FileAccess::exists(abs_icon_path)) { + _set_error("No class icon found at: " + abs_icon_path); + return; + } - p_class->icon_path = icon_path; + p_class->icon_path = icon_path; + } +#endif tokenizer->advance(); } else { @@ -4667,7 +4686,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { } } #ifdef TOOLS_ENABLED - if (subexpr->type == Node::TYPE_CONSTANT && member._export.type != Variant::NIL) { + if (subexpr->type == Node::TYPE_CONSTANT && (member._export.type != Variant::NIL || member.data_type.has_type)) { ConstantNode *cn = static_cast<ConstantNode *>(subexpr); if (cn->value.get_type() != Variant::NIL) { @@ -5438,6 +5457,12 @@ GDScriptParser::DataType GDScriptParser::_resolve_type(const DataType &p_source, // Inner classes ClassNode *outer_class = p; while (outer_class) { + if (outer_class->name == id) { + found = true; + result.kind = DataType::CLASS; + result.class_type = outer_class; + break; + } for (int i = 0; i < outer_class->subclasses.size(); i++) { if (outer_class->subclasses[i] == p) { continue; @@ -7277,7 +7302,7 @@ void GDScriptParser::_check_class_level_types(ClassNode *p_class) { DataType cont = _resolve_type(c.type, c.expression->line); DataType expr = _resolve_type(c.expression->get_datatype(), c.expression->line); - if (!_is_type_compatible(cont, expr)) { + if (check_types && !_is_type_compatible(cont, expr)) { _set_error("Constant value type (" + expr.to_string() + ") is not compatible with declared type (" + cont.to_string() + ").", c.expression->line); return; @@ -7321,7 +7346,7 @@ void GDScriptParser::_check_class_level_types(ClassNode *p_class) { if (v.expression) { DataType expr_type = _reduce_node_type(v.expression); - if (!_is_type_compatible(v.data_type, expr_type)) { + if (check_types && !_is_type_compatible(v.data_type, expr_type)) { // Try supertype test if (_is_type_compatible(expr_type, v.data_type)) { _mark_line_as_unsafe(v.line); @@ -7783,7 +7808,7 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) { return; } - if (!lh_type.has_type) { + if (!lh_type.has_type && check_types) { if (op->arguments[0]->type == Node::TYPE_OPERATOR) { _mark_line_as_unsafe(op->line); } @@ -7805,7 +7830,7 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) { bool valid = false; rh_type = _get_operation_type(oper, lh_type, arg_type, valid); - if (!valid) { + if (check_types && !valid) { _set_error("Invalid operand types ('" + lh_type.to_string() + "' and '" + arg_type.to_string() + "') to assignment operator '" + Variant::get_operator_name(oper) + "'.", op->line); @@ -7828,7 +7853,7 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) { } #endif // DEBUG_ENABLED - if (!_is_type_compatible(lh_type, rh_type)) { + if (check_types && !_is_type_compatible(lh_type, rh_type)) { // Try supertype test if (_is_type_compatible(rh_type, lh_type)) { _mark_line_as_unsafe(op->line); @@ -7864,9 +7889,11 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) { #endif // DEBUG_ENABLED } } +#ifdef DEBUG_ENABLED if (!rh_type.has_type && (op->op != OperatorNode::OP_ASSIGN || lh_type.has_type || op->arguments[0]->type == Node::TYPE_OPERATOR)) { _mark_line_as_unsafe(op->line); } +#endif // DEBUG_ENABLED } break; case OperatorNode::OP_CALL: case OperatorNode::OP_PARENT_CALL: { @@ -8103,7 +8130,6 @@ Error GDScriptParser::_parse(const String &p_base_path) { check_types = false; #endif -#ifdef DEBUG_ENABLED // Resolve all class-level stuff before getting into function blocks _check_class_level_types(main_class); @@ -8118,6 +8144,8 @@ Error GDScriptParser::_parse(const String &p_base_path) { return ERR_PARSE_ERROR; } +#ifdef DEBUG_ENABLED + // Resolve warning ignores Vector<Pair<int, String> > warning_skips = tokenizer->get_warning_skips(); bool warning_is_error = GLOBAL_GET("debug/gdscript/warnings/treat_warnings_as_errors").booleanize(); diff --git a/modules/hdr/image_loader_hdr.cpp b/modules/hdr/image_loader_hdr.cpp index eb424d36f8..f75a4a926a 100644 --- a/modules/hdr/image_loader_hdr.cpp +++ b/modules/hdr/image_loader_hdr.cpp @@ -33,8 +33,6 @@ #include "core/os/os.h" #include "core/print_string.h" -#include "thirdparty/tinyexr/tinyexr.h" - Error ImageLoaderHDR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) { String header = f->get_token(); diff --git a/modules/mono/SCsub b/modules/mono/SCsub index e1f5e2ef28..706949154e 100644 --- a/modules/mono/SCsub +++ b/modules/mono/SCsub @@ -88,6 +88,9 @@ vars.Update(env_mono) if env_mono['mono_glue']: env_mono.Append(CPPDEFINES=['MONO_GLUE_ENABLED']) +if env_mono['tools'] or env_mono['target'] != 'release': + env_mono.Append(CPPDEFINES=['GD_MONO_HOT_RELOAD']) + # Configure TLS checks import tls_configure diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index 13f8385745..5da1344595 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -139,14 +139,24 @@ void CSharpLanguage::finish() { } #endif - // Release gchandle bindings before finalizing mono runtime - script_bindings.clear(); + // Make sure all script binding gchandles are released before finalizing GDMono + for (Map<Object *, CSharpScriptBinding>::Element *E = script_bindings.front(); E; E = E->next()) { + CSharpScriptBinding &script_binding = E->value(); + + if (script_binding.gchandle.is_valid()) { + script_binding.gchandle->release(); + script_binding.inited = false; + } + } if (gdmono) { memdelete(gdmono); gdmono = NULL; } + // Clear here, after finalizing all domains to make sure there is nothing else referencing the elements. + script_bindings.clear(); + finalizing = false; } @@ -578,7 +588,7 @@ void CSharpLanguage::frame() { if (exc) { GDMonoUtils::debug_unhandled_exception(exc); - _UNREACHABLE_(); + GD_UNREACHABLE(); } } } @@ -607,31 +617,10 @@ struct CSharpScriptDepSort { void CSharpLanguage::reload_all_scripts() { -#ifdef DEBUG_ENABLED - - List<Ref<CSharpScript> > scripts; - - { - SCOPED_MUTEX_LOCK(script_instances_mutex); - - SelfList<CSharpScript> *elem = script_list.first(); - while (elem) { - if (elem->self()->get_path().is_resource_file()) { - scripts.push_back(Ref<CSharpScript>(elem->self())); //cast to gdscript to avoid being erased by accident - } - elem = elem->next(); - } - } - - //as scripts are going to be reloaded, must proceed without locking here - - scripts.sort_custom<CSharpScriptDepSort>(); //update in inheritance dependency order - - for (List<Ref<CSharpScript> >::Element *E = scripts.front(); E; E = E->next()) { - E->get()->load_source_code(E->get()->get_path()); - E->get()->reload(true); +#ifdef GD_MONO_HOT_RELOAD + if (is_assembly_reloading_needed()) { + reload_assemblies(false); } - #endif } @@ -639,15 +628,20 @@ void CSharpLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft (void)p_script; // UNUSED + CRASH_COND(!Engine::get_singleton()->is_editor_hint()); + #ifdef TOOLS_ENABLED MonoReloadNode::get_singleton()->restart_reload_timer(); +#endif + +#ifdef GD_MONO_HOT_RELOAD if (is_assembly_reloading_needed()) { reload_assemblies(p_soft_reload); } #endif } -#ifdef TOOLS_ENABLED +#ifdef GD_MONO_HOT_RELOAD bool CSharpLanguage::is_assembly_reloading_needed() { if (!gdmono->is_runtime_initialized()) @@ -679,11 +673,13 @@ bool CSharpLanguage::is_assembly_reloading_needed() { return false; // No assembly to load } +#ifdef TOOLS_ENABLED if (!gdmono->get_core_api_assembly() && gdmono->metadata_is_api_assembly_invalidated(APIAssembly::API_CORE)) return false; // The core API assembly to load is invalidated if (!gdmono->get_editor_api_assembly() && gdmono->metadata_is_api_assembly_invalidated(APIAssembly::API_EDITOR)) return false; // The editor API assembly to load is invalidated +#endif return true; } @@ -781,9 +777,11 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) { PlaceHolderScriptInstance *placeholder = scr->placeholder_instance_create(obj); obj->set_script_instance(placeholder); +#ifdef TOOLS_ENABLED // Even though build didn't fail, this tells the placeholder to keep properties and // it allows using property_set_fallback for restoring the state without a valid script. scr->placeholder_fallback_enabled = true; +#endif // Restore Variant properties state, it will be kept by the placeholder until the next script reloading for (List<Pair<StringName, Variant> >::Element *G = scr->pending_reload_state[obj_id].properties.front(); G; G = G->next()) { @@ -799,13 +797,14 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) { for (List<Ref<CSharpScript> >::Element *E = to_reload.front(); E; E = E->next()) { Ref<CSharpScript> scr = E->get(); +#ifdef TOOLS_ENABLED scr->exports_invalidated = true; +#endif scr->signals_invalidated = true; scr->reload(p_soft_reload); scr->update_exports(); { -#ifdef DEBUG_ENABLED for (Set<ObjectID>::Element *F = scr->pending_reload_instances.front(); F; F = F->next()) { ObjectID obj_id = F->get(); Object *obj = ObjectDB::get_instance(obj_id); @@ -829,7 +828,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) { CSharpScript::StateBackup &state_backup = scr->pending_reload_state[obj_id]; // Backup placeholder script instance state before replacing it with a script instance - obj->get_script_instance()->get_property_state(state_backup.properties); + si->get_property_state(state_backup.properties); ScriptInstance *script_instance = scr->instance_create(obj); @@ -864,17 +863,18 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) { scr->pending_reload_state.erase(obj_id); } -#endif scr->pending_reload_instances.clear(); } } +#ifdef TOOLS_ENABLED // FIXME: Hack to refresh editor in order to display new properties and signals. See if there is a better alternative. if (Engine::get_singleton()->is_editor_hint()) { EditorNode::get_singleton()->get_inspector()->update_tree(); NodeDock::singleton->update_lists(); } +#endif } #endif @@ -1064,12 +1064,14 @@ CSharpLanguage::~CSharpLanguage() { singleton = NULL; } -void *CSharpLanguage::alloc_instance_binding_data(Object *p_object) { +bool CSharpLanguage::setup_csharp_script_binding(CSharpScriptBinding &r_script_binding, Object *p_object) { #ifdef DEBUG_ENABLED // I don't trust you - if (p_object->get_script_instance()) - CRASH_COND(NULL != CAST_CSHARP_INSTANCE(p_object->get_script_instance())); + if (p_object->get_script_instance()) { + CSharpInstance *csharp_instance = CAST_CSHARP_INSTANCE(p_object->get_script_instance()); + CRASH_COND(csharp_instance != NULL && !csharp_instance->is_destructing_script_instance()); + } #endif StringName type_name = p_object->get_class_name(); @@ -1078,29 +1080,21 @@ void *CSharpLanguage::alloc_instance_binding_data(Object *p_object) { const ClassDB::ClassInfo *classinfo = ClassDB::classes.getptr(type_name); while (classinfo && !classinfo->exposed) classinfo = classinfo->inherits_ptr; - ERR_FAIL_NULL_V(classinfo, NULL); + ERR_FAIL_NULL_V(classinfo, false); type_name = classinfo->name; GDMonoClass *type_class = GDMonoUtils::type_get_proxy_class(type_name); - ERR_FAIL_NULL_V(type_class, NULL); + ERR_FAIL_NULL_V(type_class, false); MonoObject *mono_object = GDMonoUtils::create_managed_for_godot_object(type_class, type_name, p_object); - ERR_FAIL_NULL_V(mono_object, NULL); - - CSharpScriptBinding script_binding; - - script_binding.type_name = type_name; - script_binding.wrapper_class = type_class; // cache - script_binding.gchandle = MonoGCHandle::create_strong(mono_object); - - void *data; + ERR_FAIL_NULL_V(mono_object, false); - { - SCOPED_MUTEX_LOCK(language_bind_mutex); - data = (void *)script_bindings.insert(p_object, script_binding); - } + r_script_binding.inited = true; + r_script_binding.type_name = type_name; + r_script_binding.wrapper_class = type_class; // cache + r_script_binding.gchandle = MonoGCHandle::create_strong(mono_object); // Tie managed to unmanaged Reference *ref = Object::cast_to<Reference>(p_object); @@ -1114,6 +1108,23 @@ void *CSharpLanguage::alloc_instance_binding_data(Object *p_object) { ref->reference(); } + return true; +} + +void *CSharpLanguage::alloc_instance_binding_data(Object *p_object) { + + CSharpScriptBinding script_binding; + + if (!setup_csharp_script_binding(script_binding, p_object)) + return NULL; + + void *data; + + { + SCOPED_MUTEX_LOCK(language_bind_mutex); + data = (void *)script_bindings.insert(p_object, script_binding); + } + return data; } @@ -1135,10 +1146,15 @@ void CSharpLanguage::free_instance_binding_data(void *p_data) { Map<Object *, CSharpScriptBinding>::Element *data = (Map<Object *, CSharpScriptBinding>::Element *)p_data; - // Set the native instance field to IntPtr.Zero, if not yet garbage collected - MonoObject *mono_object = data->value().gchandle->get_target(); - if (mono_object) { - CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, NULL); + CSharpScriptBinding &script_binding = data->value(); + + if (script_binding.inited) { + // Set the native instance field to IntPtr.Zero, if not yet garbage collected. + // This is done to avoid trying to dispose the native instance from Dispose(bool). + MonoObject *mono_object = script_binding.gchandle->get_target(); + if (mono_object) { + CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, NULL); + } } script_bindings.erase(data); @@ -1154,9 +1170,10 @@ void CSharpLanguage::refcount_incremented_instance_binding(Object *p_object) { #endif void *data = p_object->get_script_instance_binding(get_language_index()); - if (!data) - return; - Ref<MonoGCHandle> &gchandle = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get().gchandle; + CRASH_COND(!data); + + CSharpScriptBinding &script_binding = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get(); + Ref<MonoGCHandle> &gchandle = script_binding.gchandle; if (ref_owner->reference_get_count() > 1 && gchandle->is_weak()) { // The managed side also holds a reference, hence 1 instead of 0 // The reference count was increased after the managed side was the only one referencing our owner. @@ -1185,9 +1202,10 @@ bool CSharpLanguage::refcount_decremented_instance_binding(Object *p_object) { int refcount = ref_owner->reference_get_count(); void *data = p_object->get_script_instance_binding(get_language_index()); - if (!data) - return refcount == 0; - Ref<MonoGCHandle> &gchandle = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get().gchandle; + CRASH_COND(!data); + + CSharpScriptBinding &script_binding = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get(); + Ref<MonoGCHandle> &gchandle = script_binding.gchandle; if (refcount == 1 && gchandle.is_valid() && !gchandle->is_weak()) { // The managed side also holds a reference, hence 1 instead of 0 // If owner owner is no longer referenced by the unmanaged side, @@ -1233,6 +1251,10 @@ MonoObject *CSharpInstance::get_mono_object() const { return gchandle->get_target(); } +Object *CSharpInstance::get_owner() { + return owner; +} + bool CSharpInstance::set(const StringName &p_name, const Variant &p_value) { ERR_FAIL_COND_V(!script.is_valid(), false); @@ -1493,14 +1515,8 @@ bool CSharpInstance::_unreference_owner_unsafe() { // Unsafe refcount decrement. The managed instance also counts as a reference. // See: _reference_owner_unsafe() - bool die = static_cast<Reference *>(owner)->unreference(); - - if (die) { - memdelete(owner); - owner = NULL; - } - - return die; + // Destroying the owner here means self destructing, so we defer the owner destruction to the caller. + return static_cast<Reference *>(owner)->unreference(); } MonoObject *CSharpInstance::_internal_new_managed() { @@ -1513,27 +1529,33 @@ MonoObject *CSharpInstance::_internal_new_managed() { ERR_FAIL_NULL_V(owner, NULL); ERR_FAIL_COND_V(script.is_null(), NULL); - if (base_ref) - _reference_owner_unsafe(); - MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, script->script_class->get_mono_ptr()); if (!mono_object) { + // Important to clear this before destroying the script instance here script = Ref<CSharpScript>(); - owner->set_script_instance(NULL); + owner = NULL; + + bool die = _unreference_owner_unsafe(); + // Not ok for the owner to die here. If there is a situation where this can happen, it will be considered a bug. + CRASH_COND(die == true); + ERR_EXPLAIN("Failed to allocate memory for the object"); ERR_FAIL_V(NULL); } + // Tie managed to unmanaged + gchandle = MonoGCHandle::create_strong(mono_object); + + if (base_ref) + _reference_owner_unsafe(); // Here, after assigning the gchandle (for the refcount_incremented callback) + CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, owner); // Construct GDMonoMethod *ctor = script->script_class->get_method(CACHED_STRING_NAME(dotctor), 0); ctor->invoke_raw(mono_object, NULL); - // Tie managed to unmanaged - gchandle = MonoGCHandle::create_strong(mono_object); - return mono_object; } @@ -1546,25 +1568,36 @@ void CSharpInstance::mono_object_disposed(MonoObject *p_obj) { CSharpLanguage::get_singleton()->release_script_gchandle(p_obj, gchandle); } -void CSharpInstance::mono_object_disposed_baseref(MonoObject *p_obj, bool p_is_finalizer, bool &r_owner_deleted) { +void CSharpInstance::mono_object_disposed_baseref(MonoObject *p_obj, bool p_is_finalizer, bool &r_delete_owner, bool &r_remove_script_instance) { #ifdef DEBUG_ENABLED CRASH_COND(!base_ref); CRASH_COND(gchandle.is_null()); #endif + + r_remove_script_instance = false; + if (_unreference_owner_unsafe()) { - r_owner_deleted = true; + // Safe to self destruct here with memdelete(owner), but it's deferred to the caller to prevent future mistakes. + r_delete_owner = true; } else { - r_owner_deleted = false; + r_delete_owner = false; CSharpLanguage::get_singleton()->release_script_gchandle(p_obj, gchandle); - if (p_is_finalizer && !GDMono::get_singleton()->is_finalizing_scripts_domain()) { - // If the native instance is still alive, then it was - // referenced from another thread before the finalizer could - // unreference it and delete it, so we want to keep it. - // GC.ReRegisterForFinalize(this) is not safe because the objects - // referenced by this could have already been collected. - // Instead we will create a new managed instance here. - _internal_new_managed(); + + if (!p_is_finalizer) { + // If the native instance is still alive and Dispose() was called + // (instead of the finalizer), then we remove the script instance. + r_remove_script_instance = true; + } else if (!GDMono::get_singleton()->is_finalizing_scripts_domain()) { + // If the native instance is still alive and this is called from the finalizer, + // then it was referenced from another thread before the finalizer could + // unreference and delete it, so we want to keep it. + // GC.ReRegisterForFinalize(this) is not safe because the objects referenced by 'this' + // could have already been collected. Instead we will create a new managed instance here. + MonoObject *new_managed = _internal_new_managed(); + if (!new_managed) { + r_remove_script_instance = true; + } } } } @@ -1618,7 +1651,7 @@ bool CSharpInstance::refcount_decremented() { return ref_dying; } -MultiplayerAPI::RPCMode CSharpInstance::_member_get_rpc_mode(GDMonoClassMember *p_member) const { +MultiplayerAPI::RPCMode CSharpInstance::_member_get_rpc_mode(IMonoClassMember *p_member) const { if (p_member->has_attribute(CACHED_CLASS(RemoteAttribute))) return MultiplayerAPI::RPC_MODE_REMOTE; @@ -1760,6 +1793,8 @@ CSharpInstance::CSharpInstance() : CSharpInstance::~CSharpInstance() { + destructing_script_instance = true; + if (gchandle.is_valid()) { if (!predelete_notified && !ref_dying) { // This destructor is not called from the owners destructor. @@ -1772,9 +1807,7 @@ CSharpInstance::~CSharpInstance() { if (mono_object) { MonoException *exc = NULL; - destructing_script_instance = true; GDMonoUtils::dispose(mono_object, &exc); - destructing_script_instance = false; if (exc) { GDMonoUtils::set_pending_exception(exc); @@ -1782,11 +1815,23 @@ CSharpInstance::~CSharpInstance() { } } - gchandle->release(); // Make sure it's released + gchandle->release(); // Make sure the gchandle is released } - if (base_ref && !ref_dying && owner) { // it may be called from the owner's destructor - _unreference_owner_unsafe(); + // If not being called from the owner's destructor, and we still hold a reference to the owner + if (base_ref && !ref_dying && owner && unsafe_referenced) { + // The owner's script or script instance is being replaced (or removed) + + // Transfer ownership to an "instance binding" + + void *data = owner->get_script_instance_binding(CSharpLanguage::get_singleton()->get_language_index()); + CRASH_COND(data == NULL); + + CSharpScriptBinding &script_binding = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get(); + CRASH_COND(!script_binding.inited); + + bool die = _unreference_owner_unsafe(); + CRASH_COND(die == true); // The "instance binding" should be holding a reference } if (script.is_valid() && owner) { @@ -2029,7 +2074,7 @@ bool CSharpScript::_get_signal(GDMonoClass *p_class, GDMonoClass *p_delegate, Ve * Returns false if there was an error, otherwise true. * If there was an error, r_prop_info and r_exported are not assigned any value. */ -bool CSharpScript::_get_member_export(GDMonoClass *p_class, GDMonoClassMember *p_member, PropertyInfo &r_prop_info, bool &r_exported) { +bool CSharpScript::_get_member_export(GDMonoClass *p_class, IMonoClassMember *p_member, PropertyInfo &r_prop_info, bool &r_exported) { StringName name = p_member->get_name(); @@ -2044,9 +2089,9 @@ bool CSharpScript::_get_member_export(GDMonoClass *p_class, GDMonoClassMember *p ManagedType type; - if (p_member->get_member_type() == GDMonoClassMember::MEMBER_TYPE_FIELD) { + if (p_member->get_member_type() == IMonoClassMember::MEMBER_TYPE_FIELD) { type = static_cast<GDMonoField *>(p_member)->get_type(); - } else if (p_member->get_member_type() == GDMonoClassMember::MEMBER_TYPE_PROPERTY) { + } else if (p_member->get_member_type() == IMonoClassMember::MEMBER_TYPE_PROPERTY) { type = static_cast<GDMonoProperty *>(p_member)->get_type(); } else { CRASH_NOW(); @@ -2060,7 +2105,7 @@ bool CSharpScript::_get_member_export(GDMonoClass *p_class, GDMonoClassMember *p return true; } - if (p_member->get_member_type() == GDMonoClassMember::MEMBER_TYPE_PROPERTY) { + if (p_member->get_member_type() == IMonoClassMember::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()); @@ -2337,6 +2382,32 @@ StringName CSharpScript::get_instance_base_type() const { CSharpInstance *CSharpScript::_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, bool p_isref, Variant::CallError &r_error) { /* STEP 1, CREATE */ + Ref<Reference> ref; + if (p_isref) { + // Hold it alive. Important if we have to dispose a script instance binding before creating the CSharpInstance. + ref = Ref<Reference>(static_cast<Reference *>(p_owner)); + } + + // If the object had a script instance binding, dispose it before adding the CSharpInstance + if (p_owner->has_script_instance_binding(CSharpLanguage::get_singleton()->get_language_index())) { + void *data = p_owner->get_script_instance_binding(CSharpLanguage::get_singleton()->get_language_index()); + CRASH_COND(data == NULL); + + CSharpScriptBinding &script_binding = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get(); + if (script_binding.inited && script_binding.gchandle.is_valid()) { + MonoObject *mono_object = script_binding.gchandle->get_target(); + if (mono_object) { + MonoException *exc = NULL; + GDMonoUtils::dispose(mono_object, &exc); + + if (exc) { + GDMonoUtils::set_pending_exception(exc); + } + } + + script_binding.inited = false; + } + } CSharpInstance *instance = memnew(CSharpInstance); instance->base_ref = p_isref; @@ -2344,16 +2415,20 @@ CSharpInstance *CSharpScript::_create_instance(const Variant **p_args, int p_arg instance->owner = p_owner; instance->owner->set_script_instance(instance); - if (instance->base_ref) - instance->_reference_owner_unsafe(); - /* STEP 2, INITIALIZE AND CONSTRUCT */ MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, script_class->get_mono_ptr()); if (!mono_object) { + // Important to clear this before destroying the script instance here instance->script = Ref<CSharpScript>(); - instance->owner->set_script_instance(NULL); + instance->owner = NULL; + + bool die = instance->_unreference_owner_unsafe(); + // Not ok for the owner to die here. If there is a situation where this can happen, it will be considered a bug. + CRASH_COND(die == true); + + p_owner->set_script_instance(NULL); r_error.error = Variant::CallError::CALL_ERROR_INSTANCE_IS_NULL; ERR_EXPLAIN("Failed to allocate memory for the object"); ERR_FAIL_V(NULL); @@ -2362,6 +2437,9 @@ CSharpInstance *CSharpScript::_create_instance(const Variant **p_args, int p_arg // Tie managed to unmanaged instance->gchandle = MonoGCHandle::create_strong(mono_object); + if (instance->base_ref) + instance->_reference_owner_unsafe(); // Here, after assigning the gchandle (for the refcount_incremented callback) + { SCOPED_MUTEX_LOCK(CSharpLanguage::get_singleton()->script_instances_mutex); instances.insert(instance->owner); @@ -2831,9 +2909,11 @@ Error ResourceFormatSaverCSharpScript::save(const String &p_path, const RES &p_r file->close(); memdelete(file); +#ifdef TOOLS_ENABLED if (ScriptServer::is_reload_scripts_on_save_enabled()) { CSharpLanguage::get_singleton()->reload_tool_script(p_resource, false); } +#endif return OK; } diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h index e554e1f41f..db9d6a73a2 100644 --- a/modules/mono/csharp_script.h +++ b/modules/mono/csharp_script.h @@ -82,10 +82,7 @@ class CSharpScript : public Script { Set<Object *> instances; -#ifdef DEBUG_ENABLED - Set<ObjectID> pending_reload_instances; -#endif - +#ifdef GD_MONO_HOT_RELOAD struct StateBackup { // TODO // Replace with buffer containing the serialized state of managed scripts. @@ -93,8 +90,8 @@ class CSharpScript : public Script { List<Pair<StringName, Variant> > properties; }; -#ifdef TOOLS_ENABLED - Map<ObjectID, CSharpScript::StateBackup> pending_reload_state; + Set<ObjectID> pending_reload_instances; + Map<ObjectID, StateBackup> pending_reload_state; #endif String source; @@ -130,7 +127,7 @@ class CSharpScript : public Script { bool _update_exports(); #ifdef TOOLS_ENABLED - bool _get_member_export(GDMonoClass *p_class, GDMonoClassMember *p_member, PropertyInfo &r_prop_info, bool &r_exported); + bool _get_member_export(GDMonoClass *p_class, IMonoClassMember *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); @@ -209,8 +206,15 @@ class CSharpInstance : public ScriptInstance { Ref<MonoGCHandle> gchandle; bool _reference_owner_unsafe(); + + /* + * If true is returned, the caller must memdelete the script instance's owner. + */ bool _unreference_owner_unsafe(); + /* + * If NULL is returned, the caller must destroy the script instance by removing it from its owner. + */ MonoObject *_internal_new_managed(); // Do not use unless you know what you are doing @@ -219,13 +223,15 @@ class CSharpInstance : public ScriptInstance { void _call_multilevel(MonoObject *p_mono_object, const StringName &p_method, const Variant **p_args, int p_argcount); - MultiplayerAPI::RPCMode _member_get_rpc_mode(GDMonoClassMember *p_member) const; + MultiplayerAPI::RPCMode _member_get_rpc_mode(IMonoClassMember *p_member) const; public: MonoObject *get_mono_object() const; _FORCE_INLINE_ bool is_destructing_script_instance() { return destructing_script_instance; } + virtual Object *get_owner(); + virtual bool set(const StringName &p_name, const Variant &p_value); virtual bool get(const StringName &p_name, Variant &r_ret) const; virtual void get_property_list(List<PropertyInfo> *p_properties) const; @@ -238,7 +244,12 @@ public: virtual void call_multilevel_reversed(const StringName &p_method, const Variant **p_args, int p_argcount); void mono_object_disposed(MonoObject *p_obj); - void mono_object_disposed_baseref(MonoObject *p_obj, bool p_is_finalizer, bool &r_owner_deleted); + + /* + * If 'r_delete_owner' is set to true, the caller must memdelete the script instance's owner. Otherwise, if + * 'r_remove_script_instance' is set to true, the caller must destroy the script instance by removing it from its owner. + */ + void mono_object_disposed_baseref(MonoObject *p_obj, bool p_is_finalizer, bool &r_delete_owner, bool &r_remove_script_instance); virtual void refcount_incremented(); virtual bool refcount_decremented(); @@ -258,6 +269,7 @@ public: }; struct CSharpScriptBinding { + bool inited; StringName type_name; GDMonoClass *wrapper_class; Ref<MonoGCHandle> gchandle; @@ -313,7 +325,7 @@ public: bool debug_break(const String &p_error, bool p_allow_continue = true); bool debug_break_parse(const String &p_file, int p_line, const String &p_error); -#ifdef TOOLS_ENABLED +#ifdef GD_MONO_HOT_RELOAD bool is_assembly_reloading_needed(); void reload_assemblies(bool p_soft_reload); #endif @@ -394,6 +406,8 @@ public: virtual void refcount_incremented_instance_binding(Object *p_object); virtual bool refcount_decremented_instance_binding(Object *p_object); + bool setup_csharp_script_binding(CSharpScriptBinding &r_script_binding, Object *p_object); + #ifdef DEBUG_ENABLED Vector<StackInfo> stack_trace_get_info(MonoObject *p_stack_trace); #endif diff --git a/modules/mono/editor/GodotSharpTools/Build/BuildSystem.cs b/modules/mono/editor/GodotSharpTools/Build/BuildSystem.cs index 16beacb45c..e7d0486c76 100644 --- a/modules/mono/editor/GodotSharpTools/Build/BuildSystem.cs +++ b/modules/mono/editor/GodotSharpTools/Build/BuildSystem.cs @@ -18,8 +18,6 @@ namespace GodotSharpTools.Build [MethodImpl(MethodImplOptions.InternalCall)] private extern static string godot_icall_BuildInstance_get_MSBuildPath(); [MethodImpl(MethodImplOptions.InternalCall)] - private extern static string godot_icall_BuildInstance_get_FrameworkPath(); - [MethodImpl(MethodImplOptions.InternalCall)] private extern static string godot_icall_BuildInstance_get_MonoWindowsBinDir(); [MethodImpl(MethodImplOptions.InternalCall)] private extern static bool godot_icall_BuildInstance_get_UsingMonoMSBuildOnWindows(); @@ -34,11 +32,6 @@ namespace GodotSharpTools.Build return msbuildPath; } - private static string GetFrameworkPath() - { - return godot_icall_BuildInstance_get_FrameworkPath(); - } - private static string MonoWindowsBinDir { get @@ -85,11 +78,6 @@ namespace GodotSharpTools.Build if (customProperties != null) customPropertiesList.AddRange(customProperties); - string frameworkPath = GetFrameworkPath(); - - if (!string.IsNullOrEmpty(frameworkPath)) - customPropertiesList.Add("FrameworkPathOverride=" + frameworkPath); - string compilerArgs = BuildArguments(loggerAssemblyPath, loggerOutputDir, customPropertiesList); ProcessStartInfo startInfo = new ProcessStartInfo(GetMSBuildPath(), compilerArgs); @@ -145,11 +133,6 @@ namespace GodotSharpTools.Build if (customProperties != null) customPropertiesList.AddRange(customProperties); - string frameworkPath = GetFrameworkPath(); - - if (!string.IsNullOrEmpty(frameworkPath)) - customPropertiesList.Add("FrameworkPathOverride=" + frameworkPath); - string compilerArgs = BuildArguments(loggerAssemblyPath, loggerOutputDir, customPropertiesList); ProcessStartInfo startInfo = new ProcessStartInfo(GetMSBuildPath(), compilerArgs); @@ -257,7 +240,7 @@ namespace GodotSharpTools.Build if (null == Parameters) throw new LoggerException("Log directory was not set."); - string[] parameters = Parameters.Split(';'); + string[] parameters = Parameters.Split(new[] { ';' }); string logDir = parameters[0]; diff --git a/modules/mono/editor/GodotSharpTools/GodotSharpTools.csproj b/modules/mono/editor/GodotSharpTools/GodotSharpTools.csproj index f9e9f41977..9a5dd24bb1 100644 --- a/modules/mono/editor/GodotSharpTools/GodotSharpTools.csproj +++ b/modules/mono/editor/GodotSharpTools/GodotSharpTools.csproj @@ -8,6 +8,7 @@ <RootNamespace>GodotSharpTools</RootNamespace> <AssemblyName>GodotSharpTools</AssemblyName> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <BaseIntermediateOutputPath>obj</BaseIntermediateOutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> diff --git a/modules/mono/editor/GodotSharpTools/Project/ProjectGenerator.cs b/modules/mono/editor/GodotSharpTools/Project/ProjectGenerator.cs index 2ce7837a27..9135006172 100644 --- a/modules/mono/editor/GodotSharpTools/Project/ProjectGenerator.cs +++ b/modules/mono/editor/GodotSharpTools/Project/ProjectGenerator.cs @@ -21,6 +21,7 @@ namespace GodotSharpTools.Project mainGroup.AddProperty("DocumentationFile", Path.Combine("$(OutputPath)", "$(AssemblyName).xml")); mainGroup.SetProperty("RootNamespace", "Godot"); mainGroup.SetProperty("ProjectGuid", CoreApiProjectGuid); + mainGroup.SetProperty("BaseIntermediateOutputPath", "obj"); GenAssemblyInfoFile(root, dir, CoreApiProjectName, new string[] { "[assembly: InternalsVisibleTo(\"" + EditorApiProjectName + "\")]" }, @@ -46,6 +47,7 @@ namespace GodotSharpTools.Project mainGroup.AddProperty("DocumentationFile", Path.Combine("$(OutputPath)", "$(AssemblyName).xml")); mainGroup.SetProperty("RootNamespace", "Godot"); mainGroup.SetProperty("ProjectGuid", EditorApiProjectGuid); + mainGroup.SetProperty("BaseIntermediateOutputPath", "obj"); GenAssemblyInfoFile(root, dir, EditorApiProjectName); diff --git a/modules/mono/editor/csharp_project.cpp b/modules/mono/editor/csharp_project.cpp index 4397bb9b6a..beeff51bc2 100644 --- a/modules/mono/editor/csharp_project.cpp +++ b/modules/mono/editor/csharp_project.cpp @@ -228,6 +228,15 @@ Error generate_scripts_metadata(const String &p_project_path, const String &p_ou if (new_dict.size()) { String json = JSON::print(new_dict, "", false); + String base_dir = p_output_path.get_base_dir(); + + if (!DirAccess::exists(base_dir)) { + DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES); + + Error err = da->make_dir_recursive(base_dir); + ERR_FAIL_COND_V(err != OK, ERR_CANT_CREATE); + } + Error ferr; FileAccess *f = FileAccess::open(p_output_path, FileAccess::WRITE, &ferr); ERR_EXPLAIN("Cannot open file for writing: " + p_output_path); diff --git a/modules/mono/editor/godotsharp_builds.cpp b/modules/mono/editor/godotsharp_builds.cpp index 5d9f4d8d54..5e1c9875f0 100644 --- a/modules/mono/editor/godotsharp_builds.cpp +++ b/modules/mono/editor/godotsharp_builds.cpp @@ -100,22 +100,24 @@ MonoString *godot_icall_BuildInstance_get_MSBuildPath() { if (msbuild_tools_path.empty() || !FileAccess::exists(msbuild_tools_path)) { // Try to search it again if it wasn't found last time or if it was removed from its location msbuild_tools_path = MonoRegUtils::find_msbuild_tools_path(); - } - - if (msbuild_tools_path.length()) { - if (!msbuild_tools_path.ends_with("\\")) - msbuild_tools_path += "\\"; - return GDMonoMarshal::mono_string_from_godot(msbuild_tools_path + "MSBuild.exe"); + if (msbuild_tools_path.empty()) { + ERR_PRINTS("Cannot find executable for '" PROP_NAME_MSBUILD_VS "'. Tried with path: " + msbuild_tools_path); + return NULL; + } } - print_verbose("Cannot find executable for '" PROP_NAME_MSBUILD_VS "'. Trying with '" PROP_NAME_MSBUILD_MONO "'..."); - } // FALL THROUGH + if (!msbuild_tools_path.ends_with("\\")) + msbuild_tools_path += "\\"; + + return GDMonoMarshal::mono_string_from_godot(msbuild_tools_path + "MSBuild.exe"); + } break; case GodotSharpBuilds::MSBUILD_MONO: { String msbuild_path = GDMono::get_singleton()->get_mono_reg_info().bin_dir.plus_file("msbuild.bat"); if (!FileAccess::exists(msbuild_path)) { - WARN_PRINTS("Cannot find executable for '" PROP_NAME_MSBUILD_MONO "'. Tried with path: " + msbuild_path); + ERR_PRINTS("Cannot find executable for '" PROP_NAME_MSBUILD_MONO "'. Tried with path: " + msbuild_path); + return NULL; } return GDMonoMarshal::mono_string_from_godot(msbuild_path); @@ -124,7 +126,8 @@ MonoString *godot_icall_BuildInstance_get_MSBuildPath() { String xbuild_path = GDMono::get_singleton()->get_mono_reg_info().bin_dir.plus_file("xbuild.bat"); if (!FileAccess::exists(xbuild_path)) { - WARN_PRINTS("Cannot find executable for '" PROP_NAME_XBUILD "'. Tried with path: " + xbuild_path); + ERR_PRINTS("Cannot find executable for '" PROP_NAME_XBUILD "'. Tried with path: " + xbuild_path); + return NULL; } return GDMonoMarshal::mono_string_from_godot(xbuild_path); @@ -144,7 +147,7 @@ MonoString *godot_icall_BuildInstance_get_MSBuildPath() { } if (xbuild_path.empty()) { - WARN_PRINT("Cannot find binary for '" PROP_NAME_XBUILD "'"); + ERR_PRINT("Cannot find binary for '" PROP_NAME_XBUILD "'"); return NULL; } } else { @@ -154,7 +157,7 @@ MonoString *godot_icall_BuildInstance_get_MSBuildPath() { } if (msbuild_path.empty()) { - WARN_PRINT("Cannot find binary for '" PROP_NAME_MSBUILD_MONO "'"); + ERR_PRINT("Cannot find binary for '" PROP_NAME_MSBUILD_MONO "'"); return NULL; } } @@ -168,22 +171,6 @@ MonoString *godot_icall_BuildInstance_get_MSBuildPath() { #endif } -MonoString *godot_icall_BuildInstance_get_FrameworkPath() { - -#if defined(WINDOWS_ENABLED) - const MonoRegInfo &mono_reg_info = GDMono::get_singleton()->get_mono_reg_info(); - if (mono_reg_info.assembly_dir.length()) { - String framework_path = path_join(mono_reg_info.assembly_dir, "mono", "4.5"); - return GDMonoMarshal::mono_string_from_godot(framework_path); - } - - ERR_EXPLAIN("Cannot find Mono's assemblies directory in the registry"); - ERR_FAIL_V(NULL); -#else - return NULL; -#endif -} - MonoString *godot_icall_BuildInstance_get_MonoWindowsBinDir() { #if defined(WINDOWS_ENABLED) @@ -216,7 +203,6 @@ void GodotSharpBuilds::register_internal_calls() { mono_add_internal_call("GodotSharpTools.Build.BuildSystem::godot_icall_BuildInstance_ExitCallback", (void *)godot_icall_BuildInstance_ExitCallback); mono_add_internal_call("GodotSharpTools.Build.BuildInstance::godot_icall_BuildInstance_get_MSBuildPath", (void *)godot_icall_BuildInstance_get_MSBuildPath); - mono_add_internal_call("GodotSharpTools.Build.BuildInstance::godot_icall_BuildInstance_get_FrameworkPath", (void *)godot_icall_BuildInstance_get_FrameworkPath); mono_add_internal_call("GodotSharpTools.Build.BuildInstance::godot_icall_BuildInstance_get_MonoWindowsBinDir", (void *)godot_icall_BuildInstance_get_MonoWindowsBinDir); mono_add_internal_call("GodotSharpTools.Build.BuildInstance::godot_icall_BuildInstance_get_UsingMonoMSBuildOnWindows", (void *)godot_icall_BuildInstance_get_UsingMonoMSBuildOnWindows); } @@ -459,7 +445,11 @@ GodotSharpBuilds::GodotSharpBuilds() { // Build tool settings EditorSettings *ed_settings = EditorSettings::get_singleton(); +#ifdef WINDOWS_ENABLED + EDITOR_DEF("mono/builds/build_tool", MSBUILD_VS); +#else EDITOR_DEF("mono/builds/build_tool", MSBUILD_MONO); +#endif ed_settings->add_property_hint(PropertyInfo(Variant::INT, "mono/builds/build_tool", PROPERTY_HINT_ENUM, PROP_NAME_MSBUILD_MONO @@ -517,7 +507,7 @@ void GodotSharpBuilds::BuildProcess::start(bool p_blocking) { // Remove old issues file - String issues_file = "msbuild_issues.csv"; + String issues_file = get_msbuild_issues_filename(); DirAccessRef d = DirAccess::create_for_path(log_dirpath); if (d->file_exists(issues_file)) { Error err = d->remove(issues_file); @@ -584,7 +574,8 @@ void GodotSharpBuilds::BuildProcess::start(bool p_blocking) { exit_code = klass->get_field("exitCode")->get_int_value(mono_object); if (exit_code != 0) { - print_verbose("MSBuild finished with exit code " + itos(exit_code)); + String log_filepath = build_info.get_log_dirpath().plus_file(get_msbuild_log_filename()); + print_verbose("MSBuild exited with code: " + itos(exit_code) + ". Log file: " + log_filepath); } build_tab->on_build_exit(exit_code == 0 ? MonoBuildTab::RESULT_SUCCESS : MonoBuildTab::RESULT_ERROR); diff --git a/modules/mono/editor/godotsharp_builds.h b/modules/mono/editor/godotsharp_builds.h index 2d53583916..652d30538a 100644 --- a/modules/mono/editor/godotsharp_builds.h +++ b/modules/mono/editor/godotsharp_builds.h @@ -76,6 +76,9 @@ public: static void show_build_error_dialog(const String &p_message); + static const char *get_msbuild_issues_filename() { return "msbuild_issues.csv"; } + static const char *get_msbuild_log_filename() { return "msbuild_log.txt"; } + void build_exit_callback(const MonoBuildInfo &p_build_info, int p_exit_code); void restart_build(MonoBuildTab *p_build_tab); diff --git a/modules/mono/editor/godotsharp_editor.cpp b/modules/mono/editor/godotsharp_editor.cpp index cee4405826..17e29fba19 100644 --- a/modules/mono/editor/godotsharp_editor.cpp +++ b/modules/mono/editor/godotsharp_editor.cpp @@ -30,6 +30,7 @@ #include "godotsharp_editor.h" +#include "core/message_queue.h" #include "core/os/os.h" #include "core/project_settings.h" #include "scene/gui/control.h" @@ -114,10 +115,33 @@ bool GodotSharpEditor::_create_project_solution() { void GodotSharpEditor::_make_api_solutions_if_needed() { // I'm sick entirely of ProgressDialog + + static int attempts_left = 100; + + if (MessageQueue::get_singleton()->is_flushing() || !SceneTree::get_singleton()) { + ERR_FAIL_COND(attempts_left == 0); // You've got to be kidding + + if (SceneTree::get_singleton()) { + SceneTree::get_singleton()->connect("idle_frame", this, "_make_api_solutions_if_needed", Vector<Variant>()); + } else { + call_deferred("_make_api_solutions_if_needed"); + } + + attempts_left--; + return; + } + + // Recursion guard needed because signals don't play well with ProgressDialog either, but unlike + // the message queue, with signals the collateral damage should be minimal in the worst case. static bool recursion_guard = false; if (!recursion_guard) { recursion_guard = true; + + // Oneshot signals don't play well with ProgressDialog either, so we do it this way instead + SceneTree::get_singleton()->disconnect("idle_frame", this, "_make_api_solutions_if_needed"); + _make_api_solutions_if_needed_impl(); + recursion_guard = false; } } @@ -248,19 +272,50 @@ Error GodotSharpEditor::open_in_external_editor(const Ref<Script> &p_script, int static String vscode_path; if (vscode_path.empty() || !FileAccess::exists(vscode_path)) { - static List<String> vscode_name; - vscode_name.push_back("code"); - vscode_name.push_back("code-oss"); - vscode_name.push_back("vscode"); - vscode_name.push_back("vscode-oss"); - vscode_name.push_back("visual-studio-code"); - vscode_name.push_back("visual-studio-code-oss"); // Try to search it again if it wasn't found last time or if it was removed from its location - for (int i = 0; i < vscode_name.size(); i++) { - vscode_path = path_which(vscode_name[i]); - if (!vscode_path.empty() || FileAccess::exists(vscode_path)) + bool found = false; + + // TODO: Use initializer lists once C++11 is allowed + + // Try with hint paths + static Vector<String> hint_paths; +#ifdef WINDOWS_ENABLED + if (hint_paths.empty()) { + hint_paths.push_back(OS::get_singleton()->get_environment("ProgramFiles") + "\\Microsoft VS Code\\Code.exe"); + if (sizeof(size_t) == 8) { + hint_paths.push_back(OS::get_singleton()->get_environment("ProgramFiles(x86)") + "\\Microsoft VS Code\\Code.exe"); + } + } +#endif + for (int i = 0; i < hint_paths.size(); i++) { + vscode_path = hint_paths[i]; + if (FileAccess::exists(vscode_path)) { + found = true; break; + } + } + + if (!found) { + static Vector<String> vscode_names; + if (vscode_names.empty()) { + vscode_names.push_back("code"); + vscode_names.push_back("code-oss"); + vscode_names.push_back("vscode"); + vscode_names.push_back("vscode-oss"); + vscode_names.push_back("visual-studio-code"); + vscode_names.push_back("visual-studio-code-oss"); + } + for (int i = 0; i < vscode_names.size(); i++) { + vscode_path = path_which(vscode_names[i]); + if (!vscode_path.empty()) { + found = true; + break; + } + } } + + if (!found) + vscode_path.clear(); // Not found, clear so next time the empty() check is enough } List<String> args; @@ -434,7 +489,7 @@ GodotSharpEditor::GodotSharpEditor(EditorNode *p_editor) { String csproj_path = GodotSharpDirs::get_project_csproj_path(); if (FileAccess::exists(sln_path) && FileAccess::exists(csproj_path)) { - // We can't use EditorProgress here. It calls Main::iterarion() and the main loop is not initialized yet. + // Defer this task because EditorProgress calls Main::iterarion() and the main loop is not yet initialized. call_deferred("_make_api_solutions_if_needed"); } else { bottom_panel_btn->hide(); @@ -452,7 +507,7 @@ GodotSharpEditor::GodotSharpEditor(EditorNode *p_editor) { EditorSettings *ed_settings = EditorSettings::get_singleton(); EDITOR_DEF("mono/editor/external_editor", EDITOR_NONE); - String settings_hint_str = "None"; + String settings_hint_str = "Disabled"; #ifdef WINDOWS_ENABLED settings_hint_str += ",MonoDevelop,Visual Studio Code"; diff --git a/modules/mono/editor/godotsharp_export.cpp b/modules/mono/editor/godotsharp_export.cpp index 47341e3555..7e2487a6e7 100644 --- a/modules/mono/editor/godotsharp_export.cpp +++ b/modules/mono/editor/godotsharp_export.cpp @@ -124,7 +124,7 @@ void GodotSharpExport::_export_begin(const Set<String> &p_features, bool p_debug ERR_FAIL_COND(!load_success); Vector<String> search_dirs; - GDMonoAssembly::fill_search_dirs(search_dirs); + GDMonoAssembly::fill_search_dirs(search_dirs, build_config); Error depend_error = _get_assembly_dependencies(scripts_assembly, search_dirs, dependencies); ERR_FAIL_COND(depend_error != OK); } diff --git a/modules/mono/editor/mono_bottom_panel.cpp b/modules/mono/editor/mono_bottom_panel.cpp index feebdb380b..cc9822e319 100644 --- a/modules/mono/editor/mono_bottom_panel.cpp +++ b/modules/mono/editor/mono_bottom_panel.cpp @@ -30,6 +30,9 @@ #include "mono_bottom_panel.h" +#include "editor/plugins/script_editor_plugin.h" +#include "editor/script_editor_debugger.h" + #include "../csharp_script.h" #include "../godotsharp_dirs.h" #include "csharp_project.h" @@ -153,14 +156,29 @@ void MonoBottomPanel::_build_project_pressed() { if (!FileAccess::exists(GodotSharpDirs::get_project_sln_path())) return; // No solution to build - String scripts_metadata_path = GodotSharpDirs::get_res_metadata_dir().plus_file("scripts_metadata.editor"); - Error metadata_err = CSharpProject::generate_scripts_metadata(GodotSharpDirs::get_project_csproj_path(), scripts_metadata_path); + String scripts_metadata_path_editor = GodotSharpDirs::get_res_metadata_dir().plus_file("scripts_metadata.editor"); + String scripts_metadata_path_player = GodotSharpDirs::get_res_metadata_dir().plus_file("scripts_metadata.editor_player"); + + Error metadata_err = CSharpProject::generate_scripts_metadata(GodotSharpDirs::get_project_csproj_path(), scripts_metadata_path_editor); ERR_FAIL_COND(metadata_err != OK); + if (FileAccess::exists(scripts_metadata_path_editor)) { + DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES); + Error copy_err = da->copy(scripts_metadata_path_editor, scripts_metadata_path_player); + + ERR_EXPLAIN("Failed to copy scripts metadata file"); + ERR_FAIL_COND(copy_err != OK); + } + bool build_success = GodotSharpBuilds::get_singleton()->build_project_blocking("Tools"); if (build_success) { + // Notify running game for hot-reload + ScriptEditor::get_singleton()->get_debugger()->reload_scripts(); + + // Hot-reload in the editor MonoReloadNode::get_singleton()->restart_reload_timer(); + if (CSharpLanguage::get_singleton()->is_assembly_reloading_needed()) { CSharpLanguage::get_singleton()->reload_assemblies(false); } @@ -179,7 +197,7 @@ void MonoBottomPanel::_view_log_pressed() { String log_dirpath = build_tab->get_build_info().get_log_dirpath(); - OS::get_singleton()->shell_open(log_dirpath.plus_file("msbuild_log.txt")); + OS::get_singleton()->shell_open(log_dirpath.plus_file(GodotSharpBuilds::get_msbuild_log_filename())); } } @@ -413,7 +431,7 @@ void MonoBuildTab::on_build_exit(BuildResult result) { build_exited = true; build_result = result; - _load_issues_from_file(logs_dir.plus_file("msbuild_issues.csv")); + _load_issues_from_file(logs_dir.plus_file(GodotSharpBuilds::get_msbuild_issues_filename())); _update_issues_list(); MonoBottomPanel::get_singleton()->raise_build_tab(this); diff --git a/modules/mono/glue/Managed/Files/Transform2D.cs b/modules/mono/glue/Managed/Files/Transform2D.cs index c9e5b560b2..f89c99cff2 100644 --- a/modules/mono/glue/Managed/Files/Transform2D.cs +++ b/modules/mono/glue/Managed/Files/Transform2D.cs @@ -13,16 +13,11 @@ namespace Godot { public Vector2 x; public Vector2 y; - public Vector2 o; - - public Vector2 Origin - { - get { return o; } - } + public Vector2 origin; public real_t Rotation { - get { return Mathf.Atan2(y.x, o.y); } + get { return Mathf.Atan2(y.x, origin.y); } } public Vector2 Scale @@ -41,7 +36,7 @@ namespace Godot case 1: return y; case 2: - return o; + return origin; default: throw new IndexOutOfRangeException(); } @@ -57,7 +52,7 @@ namespace Godot y = value; return; case 2: - o = value; + origin = value; return; default: throw new IndexOutOfRangeException(); @@ -106,9 +101,9 @@ namespace Godot { return new Transform2D ( - float.NaN, float.NaN, - float.NaN, float.NaN, - float.NaN, float.NaN + real_t.NaN, real_t.NaN, + real_t.NaN, real_t.NaN, + real_t.NaN, real_t.NaN ); } @@ -168,8 +163,8 @@ namespace Godot } // Extract parameters - Vector2 p1 = Origin; - Vector2 p2 = m.Origin; + Vector2 p1 = origin; + Vector2 p2 = m.origin; // Construct matrix var res = new Transform2D(Mathf.Atan2(v.y, v.x), p1.LinearInterpolate(p2, c)); @@ -189,7 +184,7 @@ namespace Godot inv.x.y = inv.y.x; inv.y.x = temp; - inv.o = inv.BasisXform(-inv.o); + inv.origin = inv.BasisXform(-inv.origin); return inv; } @@ -221,7 +216,7 @@ namespace Godot var copy = this; copy.x *= scale; copy.y *= scale; - copy.o *= scale; + copy.origin *= scale; return copy; } @@ -238,43 +233,43 @@ namespace Godot public Transform2D Translated(Vector2 offset) { var copy = this; - copy.o += copy.BasisXform(offset); + copy.origin += copy.BasisXform(offset); return copy; } public Vector2 Xform(Vector2 v) { - return new Vector2(Tdotx(v), Tdoty(v)) + o; + return new Vector2(Tdotx(v), Tdoty(v)) + origin; } public Vector2 XformInv(Vector2 v) { - Vector2 vInv = v - o; + Vector2 vInv = v - origin; return new Vector2(x.Dot(vInv), y.Dot(vInv)); } // Constants - private static readonly Transform2D _identity = new Transform2D(new Vector2(1f, 0f), new Vector2(0f, 1f), Vector2.Zero); - private static readonly Transform2D _flipX = new Transform2D(new Vector2(-1f, 0f), new Vector2(0f, 1f), Vector2.Zero); - private static readonly Transform2D _flipY = new Transform2D(new Vector2(1f, 0f), new Vector2(0f, -1f), Vector2.Zero); + private static readonly Transform2D _identity = new Transform2D(1, 0, 0, 1, 0, 0); + private static readonly Transform2D _flipX = new Transform2D(-1, 0, 0, 1, 0, 0); + private static readonly Transform2D _flipY = new Transform2D(1, 0, 0, -1, 0, 0); public static Transform2D Identity { get { return _identity; } } public static Transform2D FlipX { get { return _flipX; } } public static Transform2D FlipY { get { return _flipY; } } // Constructors - public Transform2D(Vector2 xAxis, Vector2 yAxis, Vector2 origin) + public Transform2D(Vector2 xAxis, Vector2 yAxis, Vector2 originPos) { x = xAxis; y = yAxis; - o = origin; + origin = originPos; } public Transform2D(real_t xx, real_t xy, real_t yx, real_t yy, real_t ox, real_t oy) { x = new Vector2(xx, xy); y = new Vector2(yx, yy); - o = new Vector2(ox, oy); + origin = new Vector2(ox, oy); } public Transform2D(real_t rot, Vector2 pos) @@ -282,15 +277,15 @@ namespace Godot real_t cr = Mathf.Cos(rot); real_t sr = Mathf.Sin(rot); x.x = cr; - y.y = cr; x.y = -sr; y.x = sr; - o = pos; + y.y = cr; + origin = pos; } public static Transform2D operator *(Transform2D left, Transform2D right) { - left.o = left.Xform(right.o); + left.origin = left.Xform(right.origin); real_t x0, x1, y0, y1; @@ -329,12 +324,12 @@ namespace Godot public bool Equals(Transform2D other) { - return x.Equals(other.x) && y.Equals(other.y) && o.Equals(other.o); + return x.Equals(other.x) && y.Equals(other.y) && origin.Equals(other.origin); } public override int GetHashCode() { - return x.GetHashCode() ^ y.GetHashCode() ^ o.GetHashCode(); + return x.GetHashCode() ^ y.GetHashCode() ^ origin.GetHashCode(); } public override string ToString() @@ -343,7 +338,7 @@ namespace Godot { x.ToString(), y.ToString(), - o.ToString() + origin.ToString() }); } @@ -353,7 +348,7 @@ namespace Godot { x.ToString(format), y.ToString(format), - o.ToString(format) + origin.ToString(format) }); } } diff --git a/modules/mono/glue/base_object_glue.cpp b/modules/mono/glue/base_object_glue.cpp index 88adc3e256..2963619b79 100644 --- a/modules/mono/glue/base_object_glue.cpp +++ b/modules/mono/glue/base_object_glue.cpp @@ -65,9 +65,12 @@ void godot_icall_Object_Disposed(MonoObject *p_obj, Object *p_ptr) { void *data = p_ptr->get_script_instance_binding(CSharpLanguage::get_singleton()->get_language_index()); if (data) { - Ref<MonoGCHandle> &gchandle = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get().gchandle; - if (gchandle.is_valid()) { - CSharpLanguage::release_script_gchandle(p_obj, gchandle); + CSharpScriptBinding &script_binding = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get(); + if (script_binding.inited) { + Ref<MonoGCHandle> &gchandle = script_binding.gchandle; + if (gchandle.is_valid()) { + CSharpLanguage::release_script_gchandle(p_obj, gchandle); + } } } } @@ -85,11 +88,14 @@ void godot_icall_Reference_Disposed(MonoObject *p_obj, Object *p_ptr, bool p_is_ CSharpInstance *cs_instance = CAST_CSHARP_INSTANCE(ref->get_script_instance()); if (cs_instance) { if (!cs_instance->is_destructing_script_instance()) { - bool r_owner_deleted; - cs_instance->mono_object_disposed_baseref(p_obj, p_is_finalizer, r_owner_deleted); - if (!r_owner_deleted && !p_is_finalizer) { - // If the native instance is still alive and Dispose() was called - // (instead of the finalizer), then we remove the script instance. + bool delete_owner; + bool remove_script_instance; + + cs_instance->mono_object_disposed_baseref(p_obj, p_is_finalizer, delete_owner, remove_script_instance); + + if (delete_owner) { + memdelete(ref); + } else if (remove_script_instance) { ref->set_script_instance(NULL); } } @@ -105,9 +111,12 @@ void godot_icall_Reference_Disposed(MonoObject *p_obj, Object *p_ptr, bool p_is_ void *data = ref->get_script_instance_binding(CSharpLanguage::get_singleton()->get_language_index()); if (data) { - Ref<MonoGCHandle> &gchandle = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get().gchandle; - if (gchandle.is_valid()) { - CSharpLanguage::release_script_gchandle(p_obj, gchandle); + CSharpScriptBinding &script_binding = ((Map<Object *, CSharpScriptBinding>::Element *)data)->get(); + if (script_binding.inited) { + Ref<MonoGCHandle> &gchandle = script_binding.gchandle; + if (gchandle.is_valid()) { + CSharpLanguage::release_script_gchandle(p_obj, gchandle); + } } } } @@ -138,7 +147,7 @@ MonoObject *godot_icall_Object_weakref(Object *p_obj) { wref->set_obj(p_obj); } - return GDMonoUtils::create_managed_for_godot_object(CACHED_CLASS(WeakRef), Reference::get_class_static(), Object::cast_to<Object>(wref.ptr())); + return GDMonoUtils::unmanaged_get_managed(wref.ptr()); } Error godot_icall_SignalAwaiter_connect(Object *p_source, MonoString *p_signal, Object *p_target, MonoObject *p_awaiter) { diff --git a/modules/mono/mono_gc_handle.cpp b/modules/mono/mono_gc_handle.cpp index b6c9b5f7dd..a9e2136a19 100644 --- a/modules/mono/mono_gc_handle.cpp +++ b/modules/mono/mono_gc_handle.cpp @@ -65,7 +65,7 @@ Ref<MonoGCHandle> MonoGCHandle::create_weak(MonoObject *p_object) { void MonoGCHandle::release() { #ifdef DEBUG_ENABLED - CRASH_COND(GDMono::get_singleton() == NULL); + CRASH_COND(!released && GDMono::get_singleton() == NULL); #endif if (!released && GDMono::get_singleton()->is_runtime_initialized()) { diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp index a422224fcb..b45046cb6d 100644 --- a/modules/mono/mono_gd/gd_mono.cpp +++ b/modules/mono/mono_gd/gd_mono.cpp @@ -54,17 +54,6 @@ #include "main/main.h" #endif -#ifdef MONO_PRINT_HANDLER_ENABLED -void gdmono_MonoPrintCallback(const char *string, mono_bool is_stdout) { - - if (is_stdout) { - OS::get_singleton()->print(string); - } else { - OS::get_singleton()->printerr(string); - } -} -#endif - GDMono *GDMono::singleton = NULL; namespace { @@ -130,9 +119,14 @@ void gdmono_debug_init() { } #endif - CharString da_args = String("--debugger-agent=transport=dt_socket,address=127.0.0.1:" + itos(da_port) + - ",embedding=1,server=y,suspend=" + (da_suspend ? "y,timeout=" + itos(da_timeout) : "n")) - .utf8(); + CharString da_args = OS::get_singleton()->get_environment("GODOT_MONO_DEBUGGER_AGENT").utf8(); + + if (da_args.length() == 0) { + da_args = String("--debugger-agent=transport=dt_socket,address=127.0.0.1:" + itos(da_port) + + ",embedding=1,server=y,suspend=" + (da_suspend ? "y,timeout=" + itos(da_timeout) : "n")) + .utf8(); + } + // --debugger-agent=help const char *options[] = { "--soft-breakpoints", @@ -145,6 +139,40 @@ void gdmono_debug_init() { } // namespace +void GDMono::add_mono_shared_libs_dir_to_path() { + // By default Mono seems to search shared libraries in the following directories: + // Current working directory, @executable_path@ and PATH + // The parent directory of the image file (assembly where the dllimport method is declared) + // @executable_path@/../lib + // @executable_path@/../Libraries (__MACH__ only) + + // This does not work when embedding Mono unless we use the same directory structure. + // To fix this we append the directory containing our shared libraries to PATH. + +#if defined(WINDOWS_ENABLED) || defined(UNIX_ENABLED) + String path_var("PATH"); + String path_value = OS::get_singleton()->get_environment(path_var); + +#ifdef WINDOWS_ENABLED + path_value += ';'; + + String bundled_bin_dir = GodotSharpDirs::get_data_mono_bin_dir(); + path_value += DirAccess::exists(bundled_bin_dir) ? bundled_bin_dir : mono_reg_info.bin_dir; +#else + path_value += ':'; + + String bundled_lib_dir = GodotSharpDirs::get_data_mono_lib_dir(); + if (DirAccess::exists(bundled_lib_dir)) { + path_value += bundled_lib_dir; + } else { + // TODO: Do we need to add the lib dir when using the system installed Mono on Unix platforms? + } +#endif + + OS::get_singleton()->set_environment(path_var, path_value); +#endif +} + void GDMono::initialize() { ERR_FAIL_NULL(Engine::get_singleton()); @@ -157,11 +185,6 @@ void GDMono::initialize() { GDMonoLog::get_singleton()->initialize(); -#ifdef MONO_PRINT_HANDLER_ENABLED - mono_trace_set_print_handler(gdmono_MonoPrintCallback); - mono_trace_set_printerr_handler(gdmono_MonoPrintCallback); -#endif - String assembly_rootdir; String config_dir; @@ -218,6 +241,8 @@ void GDMono::initialize() { mono_set_dirs(assembly_rootdir.length() ? assembly_rootdir.utf8().get_data() : NULL, config_dir.length() ? config_dir.utf8().get_data() : NULL); + add_mono_shared_libs_dir_to_path(); + GDMonoAssembly::initialize(); #ifdef DEBUG_ENABLED @@ -228,6 +253,29 @@ void GDMono::initialize() { mono_install_unhandled_exception_hook(&unhandled_exception_hook, NULL); +#ifdef TOOLS_ENABLED + if (!DirAccess::exists("res://.mono")) { + // 'res://.mono/' is missing so there is nothing to load. We don't need to initialize mono, but + // we still do so unless mscorlib is missing (which is the case for projects that don't use C#). + + String mscorlib_fname("mscorlib.dll"); + + Vector<String> search_dirs; + GDMonoAssembly::fill_search_dirs(search_dirs); + + bool found = false; + for (int i = 0; i < search_dirs.size(); i++) { + if (FileAccess::exists(search_dirs[i].plus_file(mscorlib_fname))) { + found = true; + break; + } + } + + if (!found) + return; // mscorlib is missing, do not initialize mono + } +#endif + root_domain = mono_jit_init_version("GodotEngine.RootDomain", "v4.0.30319"); ERR_EXPLAIN("Mono: Failed to initialize runtime"); @@ -322,7 +370,7 @@ namespace GodotSharpBindings { uint64_t get_core_api_hash(); #ifdef TOOLS_ENABLED uint64_t get_editor_api_hash(); -#endif // TOOLS_ENABLED +#endif uint32_t get_bindings_version(); void register_generated_icalls(); @@ -339,29 +387,20 @@ void GDMono::_register_internal_calls() { #endif } -#ifdef DEBUG_METHODS_ENABLED void GDMono::_initialize_and_check_api_hashes() { - api_core_hash = ClassDB::get_api_hash(ClassDB::API_CORE); - #ifdef MONO_GLUE_ENABLED - if (api_core_hash != GodotSharpBindings::get_core_api_hash()) { + if (get_api_core_hash() != GodotSharpBindings::get_core_api_hash()) { ERR_PRINT("Mono: Core API hash mismatch!"); } -#endif #ifdef TOOLS_ENABLED - api_editor_hash = ClassDB::get_api_hash(ClassDB::API_EDITOR); - -#ifdef MONO_GLUE_ENABLED - if (api_editor_hash != GodotSharpBindings::get_editor_api_hash()) { + if (get_api_editor_hash() != GodotSharpBindings::get_editor_api_hash()) { ERR_PRINT("Mono: Editor API hash mismatch!"); } -#endif - #endif // TOOLS_ENABLED +#endif // MONO_GLUE_ENABLED } -#endif // DEBUG_METHODS_ENABLED void GDMono::add_assembly(uint32_t p_domain_id, GDMonoAssembly *p_assembly) { @@ -726,7 +765,9 @@ Error GDMono::_unload_scripts_domain() { #endif core_api_assembly_out_of_sync = false; +#ifdef TOOLS_ENABLED editor_api_assembly_out_of_sync = false; +#endif MonoDomain *domain = scripts_domain; scripts_domain = NULL; @@ -759,7 +800,7 @@ Error GDMono::_load_tools_domain() { } #endif -#ifdef TOOLS_ENABLED +#ifdef GD_MONO_HOT_RELOAD Error GDMono::reload_scripts_domain() { ERR_FAIL_COND_V(!runtime_initialized, ERR_BUG); @@ -780,8 +821,12 @@ Error GDMono::reload_scripts_domain() { #ifdef MONO_GLUE_ENABLED if (!_load_api_assemblies()) { - if ((core_api_assembly && (core_api_assembly_out_of_sync || !GDMonoUtils::mono_cache.godot_api_cache_updated)) || - (editor_api_assembly && editor_api_assembly_out_of_sync)) { + if ((core_api_assembly && (core_api_assembly_out_of_sync || !GDMonoUtils::mono_cache.godot_api_cache_updated)) +#ifdef TOOLS_ENABLED + || (editor_api_assembly && editor_api_assembly_out_of_sync) +#endif + ) { +#ifdef TOOLS_ENABLED // The assembly was successfully loaded, but the full api could not be cached. // This is most likely an outdated assembly loaded because of an invalid version in the // metadata, so we invalidate the version in the metadata and unload the script domain. @@ -805,6 +850,10 @@ Error GDMono::reload_scripts_domain() { } return ERR_CANT_RESOLVE; +#else + ERR_PRINT("The loaded API assembly is invalid"); + CRASH_NOW(); +#endif } else { return ERR_CANT_OPEN; } @@ -900,7 +949,7 @@ void GDMono::unhandled_exception_hook(MonoObject *p_exc, void *) { ScriptDebugger::get_singleton()->idle_poll(); #endif abort(); - _UNREACHABLE_(); + GD_UNREACHABLE(); } GDMono::GDMono() { @@ -919,7 +968,9 @@ GDMono::GDMono() { #endif core_api_assembly_out_of_sync = false; +#ifdef TOOLS_ENABLED editor_api_assembly_out_of_sync = false; +#endif corlib_assembly = NULL; core_api_assembly = NULL; @@ -929,12 +980,10 @@ GDMono::GDMono() { editor_tools_assembly = NULL; #endif -#ifdef DEBUG_METHODS_ENABLED api_core_hash = 0; #ifdef TOOLS_ENABLED api_editor_hash = 0; #endif -#endif } GDMono::~GDMono() { @@ -1057,17 +1106,9 @@ void _GodotSharp::_bind_methods() { _GodotSharp::_GodotSharp() { singleton = this; - queue_empty = true; -#ifndef NO_THREADS - queue_mutex = Mutex::create(); -#endif } _GodotSharp::~_GodotSharp() { singleton = NULL; - - if (queue_mutex) { - memdelete(queue_mutex); - } } diff --git a/modules/mono/mono_gd/gd_mono.h b/modules/mono/mono_gd/gd_mono.h index 6a00b287b0..785b65ce13 100644 --- a/modules/mono/mono_gd/gd_mono.h +++ b/modules/mono/mono_gd/gd_mono.h @@ -95,7 +95,9 @@ class GDMono { #endif bool core_api_assembly_out_of_sync; +#ifdef TOOLS_ENABLED bool editor_api_assembly_out_of_sync; +#endif GDMonoAssembly *corlib_assembly; GDMonoAssembly *core_api_assembly; @@ -132,13 +134,11 @@ class GDMono { Error _load_tools_domain(); #endif -#ifdef DEBUG_METHODS_ENABLED uint64_t api_core_hash; #ifdef TOOLS_ENABLED uint64_t api_editor_hash; #endif void _initialize_and_check_api_hashes(); -#endif GDMonoLog *gdmono_log; @@ -146,15 +146,23 @@ class GDMono { MonoRegInfo mono_reg_info; #endif + void add_mono_shared_libs_dir_to_path(); + protected: static GDMono *singleton; public: -#ifdef DEBUG_METHODS_ENABLED - uint64_t get_api_core_hash() { return api_core_hash; } + uint64_t get_api_core_hash() { + if (api_core_hash == 0) + api_core_hash = ClassDB::get_api_hash(ClassDB::API_CORE); + return api_core_hash; + } #ifdef TOOLS_ENABLED - uint64_t get_api_editor_hash() { return api_editor_hash; } -#endif + uint64_t get_api_editor_hash() { + if (api_editor_hash == 0) + api_editor_hash = ClassDB::get_api_hash(ClassDB::API_EDITOR); + return api_editor_hash; + } #endif #ifdef TOOLS_ENABLED @@ -193,7 +201,7 @@ public: GDMonoClass *get_class(MonoClass *p_raw_class); -#ifdef TOOLS_ENABLED +#ifdef GD_MONO_HOT_RELOAD Error reload_scripts_domain(); #endif @@ -266,12 +274,6 @@ class _GodotSharp : public Object { List<NodePath *> np_delete_queue; List<RID *> rid_delete_queue; - bool queue_empty; - -#ifndef NO_THREADS - Mutex *queue_mutex; -#endif - protected: static _GodotSharp *singleton; static void _bind_methods(); diff --git a/modules/mono/mono_gd/gd_mono_class_member.h b/modules/mono/mono_gd/gd_mono_class_member.h index 5bd21178ba..3058b18c05 100644 --- a/modules/mono/mono_gd/gd_mono_class_member.h +++ b/modules/mono/mono_gd/gd_mono_class_member.h @@ -35,7 +35,7 @@ #include <mono/metadata/object.h> -class GDMonoClassMember { +class IMonoClassMember { public: enum Visibility { PRIVATE, @@ -51,7 +51,7 @@ public: MEMBER_TYPE_METHOD }; - virtual ~GDMonoClassMember() {} + virtual ~IMonoClassMember() {} virtual MemberType get_member_type() = 0; diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp index a9d993412e..48fa380456 100644 --- a/modules/mono/mono_gd/gd_mono_field.cpp +++ b/modules/mono/mono_gd/gd_mono_field.cpp @@ -505,20 +505,20 @@ bool GDMonoField::is_static() { return mono_field_get_flags(mono_field) & MONO_FIELD_ATTR_STATIC; } -GDMonoClassMember::Visibility GDMonoField::get_visibility() { +IMonoClassMember::Visibility GDMonoField::get_visibility() { switch (mono_field_get_flags(mono_field) & MONO_FIELD_ATTR_FIELD_ACCESS_MASK) { case MONO_FIELD_ATTR_PRIVATE: - return GDMonoClassMember::PRIVATE; + return IMonoClassMember::PRIVATE; case MONO_FIELD_ATTR_FAM_AND_ASSEM: - return GDMonoClassMember::PROTECTED_AND_INTERNAL; + return IMonoClassMember::PROTECTED_AND_INTERNAL; case MONO_FIELD_ATTR_ASSEMBLY: - return GDMonoClassMember::INTERNAL; + return IMonoClassMember::INTERNAL; case MONO_FIELD_ATTR_FAMILY: - return GDMonoClassMember::PROTECTED; + return IMonoClassMember::PROTECTED; case MONO_FIELD_ATTR_PUBLIC: - return GDMonoClassMember::PUBLIC; + return IMonoClassMember::PUBLIC; default: - ERR_FAIL_V(GDMonoClassMember::PRIVATE); + ERR_FAIL_V(IMonoClassMember::PRIVATE); } } diff --git a/modules/mono/mono_gd/gd_mono_field.h b/modules/mono/mono_gd/gd_mono_field.h index 319e895ab9..a3244101d8 100644 --- a/modules/mono/mono_gd/gd_mono_field.h +++ b/modules/mono/mono_gd/gd_mono_field.h @@ -35,7 +35,7 @@ #include "gd_mono_class_member.h" #include "gd_mono_header.h" -class GDMonoField : public GDMonoClassMember { +class GDMonoField : public IMonoClassMember { GDMonoClass *owner; MonoClassField *mono_field; @@ -47,15 +47,15 @@ class GDMonoField : public GDMonoClassMember { MonoCustomAttrInfo *attributes; public: - virtual MemberType get_member_type() { return MEMBER_TYPE_FIELD; } + virtual MemberType get_member_type() GD_FINAL { return MEMBER_TYPE_FIELD; } - virtual StringName get_name() { return name; } + virtual StringName get_name() GD_FINAL { return name; } - virtual bool is_static(); - virtual Visibility get_visibility(); + virtual bool is_static() GD_FINAL; + virtual Visibility get_visibility() GD_FINAL; - virtual bool has_attribute(GDMonoClass *p_attr_class); - virtual MonoObject *get_attribute(GDMonoClass *p_attr_class); + virtual bool has_attribute(GDMonoClass *p_attr_class) GD_FINAL; + virtual MonoObject *get_attribute(GDMonoClass *p_attr_class) GD_FINAL; void fetch_attributes(); _FORCE_INLINE_ ManagedType get_type() const { return type; } diff --git a/modules/mono/mono_gd/gd_mono_header.h b/modules/mono/mono_gd/gd_mono_header.h index 23306d11b9..dd8c047386 100644 --- a/modules/mono/mono_gd/gd_mono_header.h +++ b/modules/mono/mono_gd/gd_mono_header.h @@ -35,7 +35,7 @@ class GDMonoAssembly; class GDMonoClass; -class GDMonoClassMember; +class IMonoClassMember; class GDMonoField; class GDMonoProperty; class GDMonoMethod; diff --git a/modules/mono/mono_gd/gd_mono_internals.cpp b/modules/mono/mono_gd/gd_mono_internals.cpp index 0574b0025d..0daa394e63 100644 --- a/modules/mono/mono_gd/gd_mono_internals.cpp +++ b/modules/mono/mono_gd/gd_mono_internals.cpp @@ -72,7 +72,7 @@ void tie_managed_to_unmanaged(MonoObject *managed, Object *unmanaged) { void unhandled_exception(MonoException *p_exc) { mono_unhandled_exception((MonoObject *)p_exc); // prints the exception as well abort(); - _UNREACHABLE_(); + GD_UNREACHABLE(); } } // namespace GDMonoInternals diff --git a/modules/mono/mono_gd/gd_mono_internals.h b/modules/mono/mono_gd/gd_mono_internals.h index 09cb59ee6b..2d77bde27c 100644 --- a/modules/mono/mono_gd/gd_mono_internals.h +++ b/modules/mono/mono_gd/gd_mono_internals.h @@ -45,7 +45,7 @@ void tie_managed_to_unmanaged(MonoObject *managed, Object *unmanaged); * Do not call this function directly. * Use GDMonoUtils::debug_unhandled_exception(MonoException *) instead. */ -_NO_RETURN_ void unhandled_exception(MonoException *p_exc); +GD_NORETURN void unhandled_exception(MonoException *p_exc); } // namespace GDMonoInternals diff --git a/modules/mono/mono_gd/gd_mono_log.cpp b/modules/mono/mono_gd/gd_mono_log.cpp index fa4850ca8c..ec89df1959 100644 --- a/modules/mono/mono_gd/gd_mono_log.cpp +++ b/modules/mono/mono_gd/gd_mono_log.cpp @@ -52,7 +52,7 @@ static int log_level_get_id(const char *p_log_level) { return -1; } -void gdmono_MonoLogCallback(const char *log_domain, const char *log_level, const char *message, mono_bool fatal, void *user_data) { +static void mono_log_callback(const char *log_domain, const char *log_level, const char *message, mono_bool fatal, void *user_data) { FileAccess *f = GDMonoLog::get_singleton()->get_log_file(); @@ -153,7 +153,7 @@ void GDMonoLog::initialize() { if (log_file) { print_verbose("Mono: Logfile is " + log_file_path); - mono_trace_set_log_handler(gdmono_MonoLogCallback, this); + mono_trace_set_log_handler(mono_log_callback, this); } else { OS::get_singleton()->printerr("Mono: No log file, using default log handler\n"); } diff --git a/modules/mono/mono_gd/gd_mono_marshal.h b/modules/mono/mono_gd/gd_mono_marshal.h index 5e2deea43c..4f86e02f87 100644 --- a/modules/mono/mono_gd/gd_mono_marshal.h +++ b/modules/mono/mono_gd/gd_mono_marshal.h @@ -206,9 +206,10 @@ enum { // In the future we may force this if we want to ref return these structs #ifdef GD_MONO_FORCE_INTEROP_STRUCT_COPY -// Sometimes clang-format can be an ass -GD_STATIC_ASSERT(MATCHES_Vector2 &&MATCHES_Rect2 &&MATCHES_Transform2D &&MATCHES_Vector3 && - MATCHES_Basis &&MATCHES_Quat &&MATCHES_Transform &&MATCHES_AABB &&MATCHES_Color &&MATCHES_Plane); +/* clang-format off */ +GD_STATIC_ASSERT(MATCHES_Vector2 && MATCHES_Rect2 && MATCHES_Transform2D && MATCHES_Vector3 && + MATCHES_Basis && MATCHES_Quat && MATCHES_Transform && MATCHES_AABB && MATCHES_Color &&MATCHES_Plane); +/* clang-format on */ #endif } // namespace InteropLayout diff --git a/modules/mono/mono_gd/gd_mono_method.cpp b/modules/mono/mono_gd/gd_mono_method.cpp index 071d852ce7..7f11e4671d 100644 --- a/modules/mono/mono_gd/gd_mono_method.cpp +++ b/modules/mono/mono_gd/gd_mono_method.cpp @@ -78,20 +78,20 @@ bool GDMonoMethod::is_static() { return mono_method_get_flags(mono_method, NULL) & MONO_METHOD_ATTR_STATIC; } -GDMonoClassMember::Visibility GDMonoMethod::get_visibility() { +IMonoClassMember::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; + return IMonoClassMember::PRIVATE; case MONO_METHOD_ATTR_FAM_AND_ASSEM: - return GDMonoClassMember::PROTECTED_AND_INTERNAL; + return IMonoClassMember::PROTECTED_AND_INTERNAL; case MONO_METHOD_ATTR_ASSEM: - return GDMonoClassMember::INTERNAL; + return IMonoClassMember::INTERNAL; case MONO_METHOD_ATTR_FAMILY: - return GDMonoClassMember::PROTECTED; + return IMonoClassMember::PROTECTED; case MONO_METHOD_ATTR_PUBLIC: - return GDMonoClassMember::PUBLIC; + return IMonoClassMember::PUBLIC; default: - ERR_FAIL_V(GDMonoClassMember::PRIVATE); + ERR_FAIL_V(IMonoClassMember::PRIVATE); } } diff --git a/modules/mono/mono_gd/gd_mono_method.h b/modules/mono/mono_gd/gd_mono_method.h index c4a994177e..fc035d387c 100644 --- a/modules/mono/mono_gd/gd_mono_method.h +++ b/modules/mono/mono_gd/gd_mono_method.h @@ -35,7 +35,7 @@ #include "gd_mono_class_member.h" #include "gd_mono_header.h" -class GDMonoMethod : public GDMonoClassMember { +class GDMonoMethod : public IMonoClassMember { StringName name; @@ -57,17 +57,17 @@ class GDMonoMethod : public GDMonoClassMember { MonoMethod *mono_method; public: - virtual MemberType get_member_type() { return MEMBER_TYPE_METHOD; } + virtual MemberType get_member_type() GD_FINAL { return MEMBER_TYPE_METHOD; } - virtual StringName get_name() { return name; } + virtual StringName get_name() GD_FINAL { return name; } - virtual bool is_static(); + virtual bool is_static() GD_FINAL; - virtual Visibility get_visibility(); + virtual Visibility get_visibility() GD_FINAL; - virtual bool has_attribute(GDMonoClass *p_attr_class); - virtual MonoObject *get_attribute(GDMonoClass *p_attr_class); - virtual void fetch_attributes(); + virtual bool has_attribute(GDMonoClass *p_attr_class) GD_FINAL; + virtual MonoObject *get_attribute(GDMonoClass *p_attr_class) GD_FINAL; + void fetch_attributes(); _FORCE_INLINE_ int get_parameters_count() { return params_count; } _FORCE_INLINE_ ManagedType get_return_type() { return return_type; } diff --git a/modules/mono/mono_gd/gd_mono_property.cpp b/modules/mono/mono_gd/gd_mono_property.cpp index 04fd8b8e63..5842e26241 100644 --- a/modules/mono/mono_gd/gd_mono_property.cpp +++ b/modules/mono/mono_gd/gd_mono_property.cpp @@ -80,24 +80,24 @@ bool GDMonoProperty::is_static() { return mono_method_get_flags(prop_method, NULL) & MONO_METHOD_ATTR_STATIC; } -GDMonoClassMember::Visibility GDMonoProperty::get_visibility() { +IMonoClassMember::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; + return IMonoClassMember::PRIVATE; case MONO_METHOD_ATTR_FAM_AND_ASSEM: - return GDMonoClassMember::PROTECTED_AND_INTERNAL; + return IMonoClassMember::PROTECTED_AND_INTERNAL; case MONO_METHOD_ATTR_ASSEM: - return GDMonoClassMember::INTERNAL; + return IMonoClassMember::INTERNAL; case MONO_METHOD_ATTR_FAMILY: - return GDMonoClassMember::PROTECTED; + return IMonoClassMember::PROTECTED; case MONO_METHOD_ATTR_PUBLIC: - return GDMonoClassMember::PUBLIC; + return IMonoClassMember::PUBLIC; default: - ERR_FAIL_V(GDMonoClassMember::PRIVATE); + ERR_FAIL_V(IMonoClassMember::PRIVATE); } } diff --git a/modules/mono/mono_gd/gd_mono_property.h b/modules/mono/mono_gd/gd_mono_property.h index 934ce68904..d8a9f69ffb 100644 --- a/modules/mono/mono_gd/gd_mono_property.h +++ b/modules/mono/mono_gd/gd_mono_property.h @@ -35,7 +35,7 @@ #include "gd_mono_class_member.h" #include "gd_mono_header.h" -class GDMonoProperty : public GDMonoClassMember { +class GDMonoProperty : public IMonoClassMember { GDMonoClass *owner; MonoProperty *mono_property; @@ -47,15 +47,15 @@ class GDMonoProperty : public GDMonoClassMember { MonoCustomAttrInfo *attributes; public: - virtual MemberType get_member_type() { return MEMBER_TYPE_PROPERTY; } + virtual MemberType get_member_type() GD_FINAL { return MEMBER_TYPE_PROPERTY; } - virtual StringName get_name() { return name; } + virtual StringName get_name() GD_FINAL { return name; } - virtual bool is_static(); - virtual Visibility get_visibility(); + virtual bool is_static() GD_FINAL; + virtual Visibility get_visibility() GD_FINAL; - virtual bool has_attribute(GDMonoClass *p_attr_class); - virtual MonoObject *get_attribute(GDMonoClass *p_attr_class); + virtual bool has_attribute(GDMonoClass *p_attr_class) GD_FINAL; + virtual MonoObject *get_attribute(GDMonoClass *p_attr_class) GD_FINAL; void fetch_attributes(); bool has_getter(); diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp index 97a00a504d..ac6ccac3a7 100644 --- a/modules/mono/mono_gd/gd_mono_utils.cpp +++ b/modules/mono/mono_gd/gd_mono_utils.cpp @@ -265,61 +265,70 @@ void clear_cache() { } MonoObject *unmanaged_get_managed(Object *unmanaged) { - if (unmanaged) { - if (unmanaged->get_script_instance()) { - CSharpInstance *cs_instance = CAST_CSHARP_INSTANCE(unmanaged->get_script_instance()); - if (cs_instance) { - return cs_instance->get_mono_object(); - } + if (!unmanaged) + return NULL; + + if (unmanaged->get_script_instance()) { + CSharpInstance *cs_instance = CAST_CSHARP_INSTANCE(unmanaged->get_script_instance()); + + if (cs_instance) { + return cs_instance->get_mono_object(); } + } + + // If the owner does not have a CSharpInstance... + + void *data = unmanaged->get_script_instance_binding(CSharpLanguage::get_singleton()->get_language_index()); + + if (!data) + return NULL; - // If the owner does not have a CSharpInstance... + CSharpScriptBinding &script_binding = ((Map<Object *, CSharpScriptBinding>::Element *)data)->value(); - void *data = unmanaged->get_script_instance_binding(CSharpLanguage::get_singleton()->get_language_index()); + if (!script_binding.inited) { + // Already had a binding that needs to be setup + CSharpLanguage::get_singleton()->setup_csharp_script_binding(script_binding, unmanaged); - if (data) { - CSharpScriptBinding &script_binding = ((Map<Object *, CSharpScriptBinding>::Element *)data)->value(); + if (!script_binding.inited) + return NULL; + } - Ref<MonoGCHandle> &gchandle = script_binding.gchandle; - ERR_FAIL_COND_V(gchandle.is_null(), NULL); + Ref<MonoGCHandle> &gchandle = script_binding.gchandle; + ERR_FAIL_COND_V(gchandle.is_null(), NULL); - MonoObject *target = gchandle->get_target(); + MonoObject *target = gchandle->get_target(); - if (target) - return target; + if (target) + return target; - CSharpLanguage::get_singleton()->release_script_gchandle(gchandle); + CSharpLanguage::get_singleton()->release_script_gchandle(gchandle); - // Create a new one + // Create a new one #ifdef DEBUG_ENABLED - CRASH_COND(script_binding.type_name == StringName()); - CRASH_COND(script_binding.wrapper_class == NULL); + CRASH_COND(script_binding.type_name == StringName()); + CRASH_COND(script_binding.wrapper_class == NULL); #endif - MonoObject *mono_object = GDMonoUtils::create_managed_for_godot_object(script_binding.wrapper_class, script_binding.type_name, unmanaged); - ERR_FAIL_NULL_V(mono_object, NULL); - - gchandle->set_handle(MonoGCHandle::new_strong_handle(mono_object), MonoGCHandle::STRONG_HANDLE); + MonoObject *mono_object = GDMonoUtils::create_managed_for_godot_object(script_binding.wrapper_class, script_binding.type_name, unmanaged); + ERR_FAIL_NULL_V(mono_object, NULL); - // Tie managed to unmanaged - Reference *ref = Object::cast_to<Reference>(unmanaged); + gchandle->set_handle(MonoGCHandle::new_strong_handle(mono_object), MonoGCHandle::STRONG_HANDLE); - if (ref) { - // Unsafe refcount increment. The managed instance also counts as a reference. - // This way if the unmanaged world has no references to our owner - // but the managed instance is alive, the refcount will be 1 instead of 0. - // See: godot_icall_Reference_Dtor(MonoObject *p_obj, Object *p_ptr) + // Tie managed to unmanaged + Reference *ref = Object::cast_to<Reference>(unmanaged); - ref->reference(); - } + if (ref) { + // Unsafe refcount increment. The managed instance also counts as a reference. + // This way if the unmanaged world has no references to our owner + // but the managed instance is alive, the refcount will be 1 instead of 0. + // See: godot_icall_Reference_Dtor(MonoObject *p_obj, Object *p_ptr) - return mono_object; - } + ref->reference(); } - return NULL; + return mono_object; } void set_main_thread(MonoThread *p_thread) { @@ -565,7 +574,7 @@ void debug_send_unhandled_exception_error(MonoException *p_exc) { if (unexpected_exc) { GDMonoInternals::unhandled_exception(unexpected_exc); - _UNREACHABLE_(); + GD_UNREACHABLE(); } Vector<ScriptLanguage::StackInfo> _si; @@ -604,7 +613,7 @@ void debug_unhandled_exception(MonoException *p_exc) { ScriptDebugger::get_singleton()->idle_poll(); #endif GDMonoInternals::unhandled_exception(p_exc); // prints the exception as well - _UNREACHABLE_(); + GD_UNREACHABLE(); } void print_unhandled_exception(MonoException *p_exc) { @@ -615,7 +624,7 @@ void set_pending_exception(MonoException *p_exc) { #ifdef HAS_PENDING_EXCEPTIONS if (get_runtime_invoke_count() == 0) { debug_unhandled_exception(p_exc); - _UNREACHABLE_(); + GD_UNREACHABLE(); } if (!mono_runtime_set_pending_exception(p_exc, false)) { @@ -624,7 +633,7 @@ void set_pending_exception(MonoException *p_exc) { } #else debug_unhandled_exception(p_exc); - _UNREACHABLE_(); + GD_UNREACHABLE(); #endif } diff --git a/modules/mono/mono_gd/gd_mono_utils.h b/modules/mono/mono_gd/gd_mono_utils.h index 6febc50a5f..e88bf1ced9 100644 --- a/modules/mono/mono_gd/gd_mono_utils.h +++ b/modules/mono/mono_gd/gd_mono_utils.h @@ -44,7 +44,7 @@ #define UNLIKELY_UNHANDLED_EXCEPTION(m_exc) \ if (unlikely(m_exc != NULL)) { \ GDMonoUtils::debug_unhandled_exception(m_exc); \ - _UNREACHABLE_(); \ + GD_UNREACHABLE(); \ } namespace GDMonoUtils { @@ -214,7 +214,7 @@ void set_exception_message(MonoException *p_exc, String message); void debug_print_unhandled_exception(MonoException *p_exc); void debug_send_unhandled_exception_error(MonoException *p_exc); -_NO_RETURN_ void debug_unhandled_exception(MonoException *p_exc); +GD_NORETURN void debug_unhandled_exception(MonoException *p_exc); void print_unhandled_exception(MonoException *p_exc); /** diff --git a/modules/mono/utils/macros.h b/modules/mono/utils/macros.h index 94e1193adf..e44f254e1c 100644 --- a/modules/mono/utils/macros.h +++ b/modules/mono/utils/macros.h @@ -31,39 +31,53 @@ #ifndef UTIL_MACROS_H #define UTIL_MACROS_H -#define _GD_VARNAME_CONCAT_B(m_ignore, m_name) m_name -#define _GD_VARNAME_CONCAT_A(m_a, m_b, m_c) _GD_VARNAME_CONCAT_B(hello there, m_a##m_b##m_c) -#define _GD_VARNAME_CONCAT(m_a, m_b, m_c) _GD_VARNAME_CONCAT_A(m_a, m_b, m_c) -#define GD_UNIQUE_NAME(m_name) _GD_VARNAME_CONCAT(m_name, _, __COUNTER__) +#define _GD_VARNAME_CONCAT_B_(m_ignore, m_name) m_name +#define _GD_VARNAME_CONCAT_A_(m_a, m_b, m_c) _GD_VARNAME_CONCAT_B_(hello there, m_a##m_b##m_c) +#define _GD_VARNAME_CONCAT_(m_a, m_b, m_c) _GD_VARNAME_CONCAT_A_(m_a, m_b, m_c) +#define GD_UNIQUE_NAME(m_name) _GD_VARNAME_CONCAT_(m_name, _, __COUNTER__) -// noreturn +// static assert +// TODO: Get rid of this macro once we upgrade to C++11 -#if __cpp_static_assert +#ifdef __cpp_static_assert #define GD_STATIC_ASSERT(m_cond) static_assert((m_cond), "Condition '" #m_cond "' failed") #else #define GD_STATIC_ASSERT(m_cond) typedef int GD_UNIQUE_NAME(godot_static_assert)[((m_cond) ? 1 : -1)] #endif -#undef _NO_RETURN_ +// final +// TODO: Get rid of this macro once we upgrade to C++11 + +#if (__cplusplus >= 201103L) +#define GD_FINAL final +#else +#define GD_FINAL +#endif + +// noreturn +// TODO: Get rid of this macro once we upgrade to C++11 -#ifdef __GNUC__ -#define _NO_RETURN_ __attribute__((noreturn)) -#elif _MSC_VER -#define _NO_RETURN_ __declspec(noreturn) +#if (__cplusplus >= 201103L) +#define GD_NORETURN [[noreturn]] +#elif defined(__GNUC__) +#define GD_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define GD_NORETURN __declspec(noreturn) #else -#error Platform or compiler not supported +#define GD_NORETURN +#pragma message "Macro GD_NORETURN will have no effect" #endif // unreachable #if defined(_MSC_VER) -#define _UNREACHABLE_() __assume(0) +#define GD_UNREACHABLE() __assume(0) #elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 -#define _UNREACHABLE_() __builtin_unreachable() +#define GD_UNREACHABLE() __builtin_unreachable() #else -#define _UNREACHABLE_() \ - CRASH_NOW(); \ - do { \ +#define GD_UNREACHABLE() \ + CRASH_NOW(); \ + do { \ } while (true); #endif diff --git a/modules/mono/utils/osx_utils.cpp b/modules/mono/utils/osx_utils.cpp index 5ed982200f..f1362be249 100644 --- a/modules/mono/utils/osx_utils.cpp +++ b/modules/mono/utils/osx_utils.cpp @@ -30,10 +30,10 @@ #include "osx_utils.h" -#include "core/print_string.h" - #ifdef OSX_ENABLED +#include "core/print_string.h" + #include <CoreFoundation/CoreFoundation.h> #include <CoreServices/CoreServices.h> diff --git a/modules/mono/utils/osx_utils.h b/modules/mono/utils/osx_utils.h index 918642f7b2..cc72233058 100644 --- a/modules/mono/utils/osx_utils.h +++ b/modules/mono/utils/osx_utils.h @@ -31,6 +31,7 @@ #include "core/ustring.h" #ifndef OSX_UTILS_H +#define OSX_UTILS_H #ifdef OSX_ENABLED diff --git a/modules/mono/utils/path_utils.cpp b/modules/mono/utils/path_utils.cpp index 80f2324e15..6e431f51e7 100644 --- a/modules/mono/utils/path_utils.cpp +++ b/modules/mono/utils/path_utils.cpp @@ -59,7 +59,7 @@ String path_which(const String &p_name) { #ifdef WINDOWS_ENABLED for (int j = 0; j < exts.size(); j++) { - String p2 = p + exts[j]; + String p2 = p + exts[j].to_lower(); // lowercase to reduce risk of case mismatch warning if (FileAccess::exists(p2)) return p2; diff --git a/modules/pvr/texture_loader_pvr.cpp b/modules/pvr/texture_loader_pvr.cpp index d3f2f3c272..01e011e64c 100644 --- a/modules/pvr/texture_loader_pvr.cpp +++ b/modules/pvr/texture_loader_pvr.cpp @@ -33,6 +33,7 @@ #include "RgbaBitmap.h" #include "core/os/file_access.h" #include <string.h> +#include <new> static void _pvrtc_decompress(Image *p_img); @@ -215,12 +216,10 @@ static void _compress_pvrtc4(Image *p_img) { int ofs, size, w, h; img->get_mipmap_offset_size_and_dimensions(i, ofs, size, w, h); Javelin::RgbaBitmap bm(w, h); - copymem(bm.GetData(), &r[ofs], size); - { + for (unsigned j = 0; j < size / 4; j++) { Javelin::ColorRgba<unsigned char> *dp = bm.GetData(); - for (int j = 0; j < size / 4; j++) { - SWAP(dp[j].r, dp[j].b); - } + /* red and Green colors are swapped. */ + new (dp) Javelin::ColorRgba<unsigned char>(r[ofs + 4 * j + 2], r[ofs + 4 * j + 1], r[ofs + 4 * j], r[ofs + 4 * j + 3]); } new_img->get_mipmap_offset_size_and_dimensions(i, ofs, size, w, h); diff --git a/modules/svg/image_loader_svg.cpp b/modules/svg/image_loader_svg.cpp index 404ca24482..e36844a1bc 100644 --- a/modules/svg/image_loader_svg.cpp +++ b/modules/svg/image_loader_svg.cpp @@ -109,7 +109,12 @@ Error ImageLoaderSVG::_create_image(Ref<Image> p_image, const PoolVector<uint8_t float upscale = upsample ? 2.0 : 1.0; int w = (int)(svg_image->width * p_scale * upscale); + ERR_EXPLAIN(vformat("Can't create image from SVG with scale %s, the resulting image size exceeds max width.", rtos(p_scale))); + ERR_FAIL_COND_V(w > Image::MAX_WIDTH, ERR_PARAMETER_RANGE_ERROR); + int h = (int)(svg_image->height * p_scale * upscale); + ERR_EXPLAIN(vformat("Can't create image from SVG with scale %s, the resulting image size exceeds max height.", rtos(p_scale))); + ERR_FAIL_COND_V(h > Image::MAX_HEIGHT, ERR_PARAMETER_RANGE_ERROR); PoolVector<uint8_t> dst_image; dst_image.resize(w * h * 4); diff --git a/modules/visual_script/doc_classes/VisualScriptCondition.xml b/modules/visual_script/doc_classes/VisualScriptCondition.xml index 4657436c8f..a7b1028c0c 100644 --- a/modules/visual_script/doc_classes/VisualScriptCondition.xml +++ b/modules/visual_script/doc_classes/VisualScriptCondition.xml @@ -4,7 +4,7 @@ A Visual Script node which branches the flow. </brief_description> <description> - A Visual Script node that checks a [bool] input port. If [code]true[/code], it will exit via the “true†sequence port. If [code]false[/code], it will exit via the "false" sequence port. After exiting either, it exits via the “done†port. Sequence ports may be left disconnected. + A Visual Script node that checks a [bool] input port. If [code]true[/code], it will exit via the "true" sequence port. If [code]false[/code], it will exit via the "false" sequence port. After exiting either, it exits via the "done" port. Sequence ports may be left disconnected. [b]Input Ports:[/b] - Sequence: [code]if (cond) is[/code] - Data (boolean): [code]cond[/code] diff --git a/modules/websocket/doc_classes/WebSocketClient.xml b/modules/websocket/doc_classes/WebSocketClient.xml index 6b73b80350..ffb6d40e30 100644 --- a/modules/websocket/doc_classes/WebSocketClient.xml +++ b/modules/websocket/doc_classes/WebSocketClient.xml @@ -25,7 +25,8 @@ </argument> <description> Connect to the given URL requesting one of the given [code]protocols[/code] as sub-protocol. - If [code]true[/code], is passed as [code]gd_mp_api[/code], the client will behave like a network peer for the [MultiplayerAPI]. Note: connections to non Godot servers will not work, and [signal data_received] will not be emitted when this option is true. + If [code]true[/code] is passed as [code]gd_mp_api[/code], the client will behave like a network peer for the [MultiplayerAPI], connections to non Godot servers will not work, and [signal data_received] will not be emitted. + If [code]false[/code] is passed instead (default), you must call [PacketPeer] functions ([code]put_packet[/code], [code]get_packet[/code], etc.) on the [WebSocketPeer] returned via [code]get_peer(1)[/code] and not on this object directly (e.g. [code]get_peer(1).put_packet(data)[/code]). </description> </method> <method name="disconnect_from_host"> diff --git a/modules/websocket/doc_classes/WebSocketServer.xml b/modules/websocket/doc_classes/WebSocketServer.xml index ba66fdd89b..2932bf782a 100644 --- a/modules/websocket/doc_classes/WebSocketServer.xml +++ b/modules/websocket/doc_classes/WebSocketServer.xml @@ -72,7 +72,8 @@ <description> Start listening on the given port. You can specify the desired subprotocols via the "protocols" array. If the list empty (default), "binary" will be used. - You can use this server as a network peer for [MultiplayerAPI] by passing [code]true[/code] as [code]gd_mp_api[/code]. Note: [signal data_received] will not be fired and clients other than Godot will not work in this case. + If [code]true[/code] is passed as [code]gd_mp_api[/code], the server will behave like a network peer for the [MultiplayerAPI], connections from non Godot clients will not work, and [signal data_received] will not be emitted. + If [code]false[/code] is passed instead (default), you must call [PacketPeer] functions ([code]put_packet[/code], [code]get_packet[/code], etc.), on the [WebSocketPeer] returned via [code]get_peer(ID)[/code] to communicate with the peer with given [code]ID[/code] (e.g. [code]get_peer(ID).get_available_packet_count[/code]). </description> </method> <method name="stop"> diff --git a/modules/websocket/websocket_multiplayer.cpp b/modules/websocket/websocket_multiplayer.cpp index 7c8cc36fad..11caac944b 100644 --- a/modules/websocket/websocket_multiplayer.cpp +++ b/modules/websocket/websocket_multiplayer.cpp @@ -96,6 +96,7 @@ void WebSocketMultiplayerPeer::_bind_methods() { // int WebSocketMultiplayerPeer::get_available_packet_count() const { + ERR_EXPLAIN("Please use get_peer(ID).get_available_packet_count to get available packet count from peers when not using the MultiplayerAPI."); ERR_FAIL_COND_V(!_is_multiplayer, ERR_UNCONFIGURED); return _incoming_packets.size(); @@ -103,9 +104,11 @@ int WebSocketMultiplayerPeer::get_available_packet_count() const { Error WebSocketMultiplayerPeer::get_packet(const uint8_t **r_buffer, int &r_buffer_size) { - r_buffer_size = 0; + ERR_EXPLAIN("Please use get_peer(ID).get_packet/var to communicate with peers when not using the MultiplayerAPI."); ERR_FAIL_COND_V(!_is_multiplayer, ERR_UNCONFIGURED); + r_buffer_size = 0; + if (_current_packet.data != NULL) { memfree(_current_packet.data); _current_packet.data = NULL; @@ -122,6 +125,7 @@ Error WebSocketMultiplayerPeer::get_packet(const uint8_t **r_buffer, int &r_buff Error WebSocketMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_size) { + ERR_EXPLAIN("Please use get_peer(ID).put_packet/var to communicate with peers when not using the MultiplayerAPI."); ERR_FAIL_COND_V(!_is_multiplayer, ERR_UNCONFIGURED); PoolVector<uint8_t> buffer = _make_pkt(SYS_NONE, get_unique_id(), _target_peer, p_buffer, p_buffer_size); @@ -154,6 +158,7 @@ void WebSocketMultiplayerPeer::set_target_peer(int p_target_peer) { int WebSocketMultiplayerPeer::get_packet_peer() const { + ERR_EXPLAIN("This function is not available when not using the MultiplayerAPI."); ERR_FAIL_COND_V(!_is_multiplayer, 1); ERR_FAIL_COND_V(_incoming_packets.size() == 0, 1); diff --git a/platform/android/dir_access_jandroid.cpp b/platform/android/dir_access_jandroid.cpp index af31c758ee..4b3d93aaa7 100644 --- a/platform/android/dir_access_jandroid.cpp +++ b/platform/android/dir_access_jandroid.cpp @@ -212,6 +212,11 @@ Error DirAccessJAndroid::remove(String p_name) { ERR_FAIL_V(ERR_UNAVAILABLE); } +String DirAccessJAndroid::get_filesystem_type() const { + + return "APK"; +} + //FileType get_file_type() const; size_t DirAccessJAndroid::get_space_left() { diff --git a/platform/android/dir_access_jandroid.h b/platform/android/dir_access_jandroid.h index 1d989dd35e..e7a2d5ada1 100644 --- a/platform/android/dir_access_jandroid.h +++ b/platform/android/dir_access_jandroid.h @@ -75,6 +75,8 @@ public: virtual Error rename(String p_from, String p_to); virtual Error remove(String p_name); + virtual String get_filesystem_type() const; + //virtual FileType get_file_type() const; size_t get_space_left(); diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 405fe0b294..f293eef2ba 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -426,7 +426,7 @@ class EditorExportAndroid : public EditorExportPlatform { if (pname.length() == 0) { if (r_error) { - *r_error = "Package name is missing."; + *r_error = TTR("Package name is missing."); } return false; } @@ -437,7 +437,7 @@ class EditorExportAndroid : public EditorExportPlatform { CharType c = pname[i]; if (first && c == '.') { if (r_error) { - *r_error = "Package segments must be of non-zero length."; + *r_error = TTR("Package segments must be of non-zero length."); } return false; } @@ -448,19 +448,19 @@ class EditorExportAndroid : public EditorExportPlatform { } if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_')) { if (r_error) { - *r_error = "The character '" + String::chr(c) + "' is not allowed in Android application package names."; + *r_error = vformat(TTR("The character '%s' is not allowed in Android application package names."), String::chr(c)); } return false; } if (first && (c >= '0' && c <= '9')) { if (r_error) { - *r_error = "A digit cannot be the first character in a package segment."; + *r_error = TTR("A digit cannot be the first character in a package segment."); } return false; } if (first && c == '_') { if (r_error) { - *r_error = "The character '" + String::chr(c) + "' cannot be the first character in a package segment."; + *r_error = vformat(TTR("The character '%s' cannot be the first character in a package segment."), String::chr(c)); } return false; } @@ -469,14 +469,14 @@ class EditorExportAndroid : public EditorExportPlatform { if (segments == 0) { if (r_error) { - *r_error = "The package must have at least one '.' separator."; + *r_error = TTR("The package must have at least one '.' separator."); } return false; } if (first) { if (r_error) { - *r_error = "Package segments must be of non-zero length."; + *r_error = TTR("Package segments must be of non-zero length."); } return false; } @@ -584,7 +584,7 @@ class EditorExportAndroid : public EditorExportPlatform { static Error save_apk_so(void *p_userdata, const SharedObject &p_so) { if (!p_so.path.get_file().begins_with("lib")) { String err = "Android .so file names must start with \"lib\", but got: " + p_so.path; - ERR_PRINT(err.utf8().get_data()); + ERR_PRINTS(err); return FAILED; } APKExportData *ed = (APKExportData *)p_userdata; @@ -605,7 +605,7 @@ class EditorExportAndroid : public EditorExportPlatform { if (!exported) { String abis_string = String(" ").join(abis); String err = "Cannot determine ABI for library \"" + p_so.path + "\". One of the supported ABIs must be used as a tag: " + abis_string; - ERR_PRINT(err.utf8().get_data()); + ERR_PRINTS(err); return FAILED; } return OK; @@ -1390,7 +1390,7 @@ public: if (FileAccess::exists(p_preset->get("custom_package/debug"))) { r_missing_templates = false; } else { - err += "Custom debug package not found.\n"; + err += TTR("Custom debug template not found.") + "\n"; } } @@ -1398,7 +1398,7 @@ public: if (FileAccess::exists(p_preset->get("custom_package/release"))) { r_missing_templates = false; } else { - err += "Custom release package not found.\n"; + err += TTR("Custom release template not found.") + "\n"; } } @@ -1409,7 +1409,7 @@ public: if (!FileAccess::exists(adb)) { valid = false; - err += "ADB executable not configured in the Editor Settings.\n"; + err += TTR("ADB executable not configured in the Editor Settings.") + "\n"; } String js = EditorSettings::get_singleton()->get("export/android/jarsigner"); @@ -1417,7 +1417,7 @@ public: if (!FileAccess::exists(js)) { valid = false; - err += "OpenJDK 8 jarsigner not configured in the Editor Settings.\n"; + err += TTR("OpenJDK jarsigner not configured in the Editor Settings.") + "\n"; } String dk = p_preset->get("keystore/debug"); @@ -1427,7 +1427,7 @@ public: dk = EditorSettings::get_singleton()->get("export/android/debug_keystore"); if (!FileAccess::exists(dk)) { valid = false; - err += "Debug keystore not configured in the Editor Settings nor in the preset.\n"; + err += TTR("Debug keystore not configured in the Editor Settings nor in the preset.") + "\n"; } } @@ -1435,19 +1435,12 @@ public: if (apk_expansion) { - /* - if (apk_expansion_salt=="") { - valid=false; - err+="Invalid SALT for apk expansion.\n"; - } - */ - String apk_expansion_pkey = p_preset->get("apk_expansion/public_key"); if (apk_expansion_pkey == "") { valid = false; - err += "Invalid public key for APK expansion.\n"; + err += TTR("Invalid public key for APK expansion.") + "\n"; } } @@ -1457,7 +1450,7 @@ public: if (!is_package_name_valid(get_package_name(pn), &pn_err)) { valid = false; - err += "Invalid package name - " + pn_err + "\n"; + err += TTR("Invalid package name:") + " " + pn_err + "\n"; } r_error = err; @@ -1656,16 +1649,6 @@ public: if (p_flags & DEBUG_FLAG_DUMB_CLIENT) { - /*String host = EditorSettings::get_singleton()->get("filesystem/file_server/host"); - int port = EditorSettings::get_singleton()->get("filesystem/file_server/post"); - String passwd = EditorSettings::get_singleton()->get("filesystem/file_server/password"); - cl.push_back("--remote-fs"); - cl.push_back(host+":"+itos(port)); - if (passwd!="") { - cl.push_back("--remote-fs-password"); - cl.push_back(passwd); - }*/ - APKExportData ed; ed.ep = &ep; ed.apk = unaligned_apk; diff --git a/platform/android/thread_jandroid.cpp b/platform/android/thread_jandroid.cpp index 98f6e79dcb..9df9e57b24 100644 --- a/platform/android/thread_jandroid.cpp +++ b/platform/android/thread_jandroid.cpp @@ -34,9 +34,13 @@ #include "core/safe_refcount.h" #include "core/script_language.h" +static void _thread_id_key_destr_callback(void *p_value) { + memdelete(static_cast<Thread::ID *>(p_value)); +} + static pthread_key_t _create_thread_id_key() { pthread_key_t key; - pthread_key_create(&key, NULL); + pthread_key_create(&key, &_thread_id_key_destr_callback); return key; } @@ -59,7 +63,7 @@ void *ThreadAndroid::thread_callback(void *userdata) { setup_thread(); ScriptServer::thread_enter(); //scripts may need to attach a stack t->id = atomic_increment(&next_thread_id); - pthread_setspecific(thread_id_key, (void *)t->id); + pthread_setspecific(thread_id_key, (void *)memnew(ID(t->id))); t->callback(t->user); ScriptServer::thread_exit(); return NULL; @@ -80,7 +84,14 @@ Thread *ThreadAndroid::create_func_jandroid(ThreadCreateCallback p_callback, voi Thread::ID ThreadAndroid::get_thread_id_func_jandroid() { - return (ID)pthread_getspecific(thread_id_key); + void *value = pthread_getspecific(thread_id_key); + + if (value) + return *static_cast<ID *>(value); + + ID new_id = atomic_increment(&next_thread_id); + pthread_setspecific(thread_id_key, (void *)memnew(ID(new_id))); + return new_id; } void ThreadAndroid::wait_to_finish_func_jandroid(Thread *p_thread) { diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp index ef81981ec0..849e6d4a14 100644 --- a/platform/iphone/export/export.cpp +++ b/platform/iphone/export/export.cpp @@ -105,7 +105,7 @@ class EditorExportPlatformIOS : public EditorExportPlatform { if (pname.length() == 0) { if (r_error) { - *r_error = "Identifier is missing."; + *r_error = TTR("Identifier is missing."); } return false; } @@ -116,7 +116,7 @@ class EditorExportPlatformIOS : public EditorExportPlatform { CharType c = pname[i]; if (first && c == '.') { if (r_error) { - *r_error = "Identifier segments must be of non-zero length."; + *r_error = TTR("Identifier segments must be of non-zero length."); } return false; } @@ -127,19 +127,19 @@ class EditorExportPlatformIOS : public EditorExportPlatform { } if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_')) { if (r_error) { - *r_error = "The character '" + String::chr(c) + "' is not allowed in Identifier."; + *r_error = vformat(TTR("The character '%s' is not allowed in Identifier."), String::chr(c)); } return false; } if (first && (c >= '0' && c <= '9')) { if (r_error) { - *r_error = "A digit cannot be the first character in a Identifier segment."; + *r_error = TTR("A digit cannot be the first character in a Identifier segment."); } return false; } if (first && c == '_') { if (r_error) { - *r_error = "The character '" + String::chr(c) + "' cannot be the first character in a Identifier segment."; + *r_error = vformat(TTR("The character '%s' cannot be the first character in a Identifier segment."), String::chr(c)); } return false; } @@ -148,14 +148,14 @@ class EditorExportPlatformIOS : public EditorExportPlatform { if (segments == 0) { if (r_error) { - *r_error = "The Identifier must have at least one '.' separator."; + *r_error = TTR("The Identifier must have at least one '.' separator."); } return false; } if (first) { if (r_error) { - *r_error = "Identifier segments must be of non-zero length."; + *r_error = TTR("Identifier segments must be of non-zero length."); } return false; } @@ -1036,7 +1036,7 @@ bool EditorExportPlatformIOS::can_export(const Ref<EditorExportPreset> &p_preset if (FileAccess::exists(p_preset->get("custom_package/debug"))) { r_missing_templates = false; } else { - err += "Custom debug package not found.\n"; + err += TTR("Custom debug template not found.") + "\n"; } } @@ -1044,7 +1044,7 @@ bool EditorExportPlatformIOS::can_export(const Ref<EditorExportPreset> &p_preset if (FileAccess::exists(p_preset->get("custom_package/release"))) { r_missing_templates = false; } else { - err += "Custom release package not found.\n"; + err += TTR("Custom release template not found.") + "\n"; } } @@ -1052,14 +1052,14 @@ bool EditorExportPlatformIOS::can_export(const Ref<EditorExportPreset> &p_preset String team_id = p_preset->get("application/app_store_team_id"); if (team_id.length() == 0) { - err += "App Store Team ID not specified - cannot configure the project.\n"; + err += TTR("App Store Team ID not specified - cannot configure the project.") + "\n"; valid = false; } String identifier = p_preset->get("application/identifier"); String pn_err; if (!is_package_name_valid(identifier, &pn_err)) { - err += "Invalid Identifier - " + pn_err + "\n"; + err += TTR("Invalid Identifier:") + " " + pn_err + "\n"; valid = false; } @@ -1068,7 +1068,7 @@ bool EditorExportPlatformIOS::can_export(const Ref<EditorExportPreset> &p_preset String icon_path = p_preset->get(info.preset_key); if (icon_path.length() == 0) { if (info.is_required) { - err += "Required icon is not specified in the preset.\n"; + err += TTR("Required icon is not specified in the preset.") + "\n"; valid = false; } break; diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp index fcfc75280d..16fdc267f3 100644 --- a/platform/javascript/audio_driver_javascript.cpp +++ b/platform/javascript/audio_driver_javascript.cpp @@ -146,6 +146,15 @@ void AudioDriverJavaScript::start() { /* clang-format on */ } +void AudioDriverJavaScript::resume() { + /* clang-format off */ + EM_ASM({ + if (_audioDriver_audioContext.resume) + _audioDriver_audioContext.resume(); + }); + /* clang-format on */ +} + int AudioDriverJavaScript::get_mix_rate() const { /* clang-format off */ diff --git a/platform/javascript/audio_driver_javascript.h b/platform/javascript/audio_driver_javascript.h index bf7e2bcce6..9dcba02c96 100644 --- a/platform/javascript/audio_driver_javascript.h +++ b/platform/javascript/audio_driver_javascript.h @@ -49,6 +49,7 @@ public: virtual Error init(); virtual void start(); + void resume(); virtual int get_mix_rate() const; virtual SpeakerMode get_speaker_mode() const; virtual void lock(); diff --git a/platform/javascript/export/export.cpp b/platform/javascript/export/export.cpp index b3f90b9011..123c6ae645 100644 --- a/platform/javascript/export/export.cpp +++ b/platform/javascript/export/export.cpp @@ -155,7 +155,7 @@ bool EditorExportPlatformJavaScript::can_export(const Ref<EditorExportPreset> &p if (FileAccess::exists(p_preset->get("custom_template/debug"))) { valid = true; } else { - err += "Custom debug template not found.\n"; + err += TTR("Custom debug template not found.") + "\n"; } } @@ -163,7 +163,7 @@ bool EditorExportPlatformJavaScript::can_export(const Ref<EditorExportPreset> &p if (FileAccess::exists(p_preset->get("custom_template/release"))) { valid = true; } else { - err += "Custom release template not found.\n"; + err += TTR("Custom release template not found.") + "\n"; } } diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index cc3018716d..e820d07a2a 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -245,6 +245,8 @@ EM_BOOL OS_JavaScript::keydown_callback(int p_event_type, const EmscriptenKeyboa return false; } os->input->parse_input_event(ev); + // Resume audio context after input in case autoplay was denied. + os->audio_driver_javascript.resume(); return true; } @@ -335,6 +337,8 @@ EM_BOOL OS_JavaScript::mouse_button_callback(int p_event_type, const EmscriptenM ev->set_button_mask(mask); os->input->parse_input_event(ev); + // Resume audio context after input in case autoplay was denied. + os->audio_driver_javascript.resume(); // Prevent multi-click text selection and wheel-click scrolling anchor. // Context menu is prevented through contextmenu event. return true; @@ -438,6 +442,9 @@ void OS_JavaScript::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_s if (texture.is_valid()) { image = texture->get_data(); + if (image.is_valid()) { + image->duplicate(); + } } if (!image.is_valid() && atlas_texture.is_valid()) { @@ -464,6 +471,8 @@ void OS_JavaScript::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_s ERR_FAIL_COND(!image.is_valid()); + image = image->duplicate(); + if (atlas_texture.is_valid()) image->crop_from_point( atlas_rect.position.x, @@ -663,6 +672,8 @@ EM_BOOL OS_JavaScript::touch_press_callback(int p_event_type, const EmscriptenTo os->input->parse_input_event(ev); } + // Resume audio context after input in case autoplay was denied. + os->audio_driver_javascript.resume(); return true; } @@ -855,8 +866,21 @@ Error OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, video_driver_index = p_video_driver; video_mode = p_desired; - // Can't fulfill fullscreen request during start-up due to browser security. + // fullscreen_change_callback will correct this if the request is successful. video_mode.fullscreen = false; + // Emscripten only attempts fullscreen requests if the user input callback + // was registered through one its own functions, so request manually for + // start-up fullscreen. + if (p_desired.fullscreen) { + /* clang-format off */ + EM_ASM({ + (canvas.requestFullscreen || canvas.msRequestFullscreen || + canvas.mozRequestFullScreen || canvas.mozRequestFullscreen || + canvas.webkitRequestFullscreen + ).call(canvas); + }); + /* clang-format on */ + } /* clang-format off */ if (EM_ASM_INT_V({ return Module.resizeCanvasOnStart })) { /* clang-format on */ @@ -970,7 +994,8 @@ bool OS_JavaScript::main_loop_iterate() { } } - process_joypads(); + if (emscripten_sample_gamepad_data() == EMSCRIPTEN_RESULT_SUCCESS) + process_joypads(); if (just_exited_fullscreen) { if (window_maximized) { diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h index 64148915a5..a9f9e23463 100644 --- a/platform/javascript/os_javascript.h +++ b/platform/javascript/os_javascript.h @@ -58,6 +58,7 @@ class OS_JavaScript : public OS_Unix { int last_click_button_index; MainLoop *main_loop; + int video_driver_index; AudioDriverJavaScript audio_driver_javascript; bool idb_available; @@ -85,8 +86,6 @@ class OS_JavaScript : public OS_Unix { static void file_access_close_callback(const String &p_file, int p_flags); - int video_driver_index; - protected: virtual int get_current_video_driver() const; diff --git a/platform/osx/detect.py b/platform/osx/detect.py index 31fcbc0427..36a753e683 100644 --- a/platform/osx/detect.py +++ b/platform/osx/detect.py @@ -126,7 +126,7 @@ def configure(env): env.Append(CPPPATH=['#platform/osx']) env.Append(CPPFLAGS=['-DOSX_ENABLED', '-DUNIX_ENABLED', '-DGLES_ENABLED', '-DAPPLE_STYLE_KEYS', '-DCOREAUDIO_ENABLED', '-DCOREMIDI_ENABLED']) - env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit', '-framework', 'CoreAudio', '-framework', 'CoreMIDI', '-lz', '-framework', 'IOKit', '-framework', 'ForceFeedback']) + env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit', '-framework', 'CoreAudio', '-framework', 'CoreMIDI', '-lz', '-framework', 'IOKit', '-framework', 'ForceFeedback', '-framework', 'CoreVideo']) env.Append(LIBS=['pthread']) env.Append(CPPFLAGS=['-mmacosx-version-min=10.9']) diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index 845ef4e893..b8f6977b39 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -749,7 +749,7 @@ bool EditorExportPlatformOSX::can_export(const Ref<EditorExportPreset> &p_preset if (FileAccess::exists(p_preset->get("custom_package/debug"))) { valid = true; } else { - err += "Custom debug package not found.\n"; + err += TTR("Custom debug template not found.") + "\n"; } } @@ -757,7 +757,7 @@ bool EditorExportPlatformOSX::can_export(const Ref<EditorExportPreset> &p_preset if (FileAccess::exists(p_preset->get("custom_package/release"))) { valid = true; } else { - err += "Custom release package not found.\n"; + err += TTR("Custom release template not found.") + "\n"; } } diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h index 262079fa89..927c8c9b00 100644 --- a/platform/osx/os_osx.h +++ b/platform/osx/os_osx.h @@ -43,8 +43,10 @@ #include "servers/visual/rasterizer.h" #include "servers/visual/visual_server_wrap_mt.h" #include "servers/visual_server.h" +#include <AppKit/AppKit.h> #include <AppKit/NSCursor.h> #include <ApplicationServices/ApplicationServices.h> +#include <CoreVideo/CoreVideo.h> #undef CursorShape /** @@ -102,10 +104,13 @@ public: id window_view; id autoreleasePool; id cursor; - id pixelFormat; - id context; + NSOpenGLPixelFormat *pixelFormat; + NSOpenGLContext *context; bool layered_window; + bool waiting_for_vsync; + NSCondition *vsync_condition; + CVDisplayLinkRef displayLink; CursorShape cursor_shape; NSCursor *cursors[CURSOR_MAX]; diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index ddd98ab88c..6b65c1a529 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -117,6 +117,21 @@ static Vector2 get_mouse_pos(NSPoint locationInWindow, CGFloat backingScaleFacto return Vector2(mouse_x, mouse_y); } +// DisplayLinkCallback is called from our DisplayLink OS thread informing us right before +// a screen update is required. We can use it to work around the broken vsync. +static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *now, const CVTimeStamp *outputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext) { + OS_OSX *os = (OS_OSX *)displayLinkContext; + + // Set flag so we know we can output our next frame and signal our conditional lock + // if we're not doing vsync this will be ignored + [os->vsync_condition lock]; + os->waiting_for_vsync = false; + [os->vsync_condition signal]; + [os->vsync_condition unlock]; + + return kCVReturnSuccess; +} + @interface GodotApplication : NSApplication @end @@ -267,7 +282,9 @@ static Vector2 get_mouse_pos(NSPoint locationInWindow, CGFloat backingScaleFacto NSWindow *window = (NSWindow *)[notification object]; CGFloat newBackingScaleFactor = [window backingScaleFactor]; CGFloat oldBackingScaleFactor = [[[notification userInfo] objectForKey:@"NSBackingPropertyOldScaleFactorKey"] doubleValue]; - [OS_OSX::singleton->window_view setWantsBestResolutionOpenGLSurface:YES]; + if (OS_OSX::singleton->is_hidpi_allowed()) { + [OS_OSX::singleton->window_view setWantsBestResolutionOpenGLSurface:YES]; + } if (newBackingScaleFactor != oldBackingScaleFactor) { //Set new display scale and window size @@ -304,7 +321,9 @@ static Vector2 get_mouse_pos(NSPoint locationInWindow, CGFloat backingScaleFacto if (OS_OSX::singleton->main_loop) { Main::force_redraw(); //Event retrieval blocks until resize is over. Call Main::iteration() directly. - Main::iteration(); + if (!Main::is_iterating()) { //avoid cyclic loop + Main::iteration(); + } } /* @@ -1364,6 +1383,15 @@ Error OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_a [context makeCurrentContext]; + // setup our display link, this will inform us when a refresh is needed + CVDisplayLinkCreateWithActiveCGDisplays(&displayLink); + CVDisplayLinkSetOutputCallback(displayLink, &DisplayLinkCallback, this); + CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext(displayLink, context.CGLContextObj, pixelFormat.CGLPixelFormatObj); + CVDisplayLinkStart(displayLink); + + // initialise a conditional lock object + vsync_condition = [[NSCondition alloc] init]; + set_use_vsync(p_desired.use_vsync); [NSApp activateIgnoringOtherApps:YES]; @@ -1451,6 +1479,11 @@ void OS_OSX::finalize() { midi_driver.close(); #endif + if (displayLink) { + CVDisplayLinkRelease(displayLink); + } + [vsync_condition release]; + CFNotificationCenterRemoveObserver(CFNotificationCenterGetDistributedCenter(), NULL, kTISNotifySelectedKeyboardInputSourceChanged, NULL); CGDisplayRemoveReconfigurationCallback(displays_arrangement_changed, NULL); @@ -1965,6 +1998,17 @@ String OS_OSX::get_locale() const { } void OS_OSX::swap_buffers() { + if (is_vsync_enabled()) { + // Wait until our DisplayLink callback unsets our flag... + [vsync_condition lock]; + while (waiting_for_vsync) + [vsync_condition wait]; + + // Make sure we wait again next frame around + waiting_for_vsync = true; + + [vsync_condition unlock]; + } [context flushBuffer]; } @@ -2631,22 +2675,22 @@ Error OS_OSX::move_to_trash(const String &p_path) { } void OS_OSX::_set_use_vsync(bool p_enable) { - CGLContextObj ctx = CGLGetCurrentContext(); + // CGLCPSwapInterval broke in OSX 10.14 and it seems Apple is not interested in fixing + // it as OpenGL is now deprecated and Metal solves this differently. + // Following SDLs example we're working around this using DisplayLink + // When vsync is enabled we set a flag "waiting_for_vsync" to true. + // This flag is set to false when DisplayLink informs us our display is about to refresh. + + /* CGLContextObj ctx = CGLGetCurrentContext(); if (ctx) { GLint swapInterval = p_enable ? 1 : 0; CGLSetParameter(ctx, kCGLCPSwapInterval, &swapInterval); - } -} -/* -bool OS_OSX::is_vsync_enabled() const { - GLint swapInterval = 0; - CGLContextObj ctx = CGLGetCurrentContext(); - if (ctx) { - CGLGetParameter(ctx, kCGLCPSwapInterval, &swapInterval); - } - return swapInterval ? true : false; + }*/ + + ///TODO Maybe pause/unpause display link? + waiting_for_vsync = p_enable; } -*/ + OS_OSX *OS_OSX::singleton = NULL; OS_OSX::OS_OSX() { diff --git a/platform/uwp/export/export.cpp b/platform/uwp/export/export.cpp index 6f4898c005..6808016f13 100644 --- a/platform/uwp/export/export.cpp +++ b/platform/uwp/export/export.cpp @@ -73,7 +73,7 @@ static const char *uwp_uap_capabilities[] = { "voipCall", NULL }; -static const char *uwp_device_capabilites[] = { +static const char *uwp_device_capabilities[] = { "bluetooth", "location", "microphone", @@ -841,7 +841,7 @@ class EditorExportUWP : public EditorExportPlatform { } uap++; } - const char **device = uwp_device_capabilites; + const char **device = uwp_device_capabilities; while (*device) { if ((bool)p_preset->get("capabilities/" + String(*device))) { capabilities_elements += " <DeviceCapability Name=\"" + String(*device) + "\" />\n"; @@ -1105,7 +1105,7 @@ public: uap++; } - const char **device = uwp_device_capabilites; + const char **device = uwp_device_capabilities; while (*device) { r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "capabilities/" + String(*device).camelcase_to_underscore(false)), false)); device++; @@ -1151,12 +1151,12 @@ public: if (!FileAccess::exists(custom_debug_binary)) { dvalid = false; - err = "\nCustom debug binary not found."; + err += TTR("Custom debug template not found.") + "\n"; } if (!FileAccess::exists(custom_release_binary)) { rvalid = false; - err += "\nCustom release binary not found."; + err += TTR("Custom release template not found.") + "\n"; } if (dvalid || rvalid) @@ -1169,57 +1169,57 @@ public: if (!_valid_resource_name(p_preset->get("package/unique_name"))) { valid = false; - err += "\nInvalid unique name."; + err += TTR("Invalid package unique name.") + "\n"; } if (!_valid_guid(p_preset->get("identity/product_guid"))) { valid = false; - err += "\nInvalid product GUID."; + err += TTR("Invalid product GUID.") + "\n"; } if (!_valid_guid(p_preset->get("identity/publisher_guid"))) { valid = false; - err += "\nInvalid publisher GUID."; + err += TTR("Invalid publisher GUID.") + "\n"; } if (!_valid_bgcolor(p_preset->get("images/background_color"))) { valid = false; - err += "\nInvalid background color."; + err += TTR("Invalid background color.") + "\n"; } if (!p_preset->get("images/store_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/store_logo"))), 50, 50)) { valid = false; - err += "\nInvalid Store Logo image dimensions (should be 50x50)."; + err += TTR("Invalid Store Logo image dimensions (should be 50x50).") + "\n"; } if (!p_preset->get("images/square44x44_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/square44x44_logo"))), 44, 44)) { valid = false; - err += "\nInvalid square 44x44 logo image dimensions (should be 44x44)."; + err += TTR("Invalid square 44x44 logo image dimensions (should be 44x44).") + "\n"; } if (!p_preset->get("images/square71x71_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/square71x71_logo"))), 71, 71)) { valid = false; - err += "\nInvalid square 71x71 logo image dimensions (should be 71x71)."; + err += TTR("Invalid square 71x71 logo image dimensions (should be 71x71).") + "\n"; } if (!p_preset->get("images/square150x150_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/square150x150_logo"))), 150, 0)) { valid = false; - err += "\nInvalid square 150x150 logo image dimensions (should be 150x150)."; + err += TTR("Invalid square 150x150 logo image dimensions (should be 150x150).") + "\n"; } if (!p_preset->get("images/square310x310_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/square310x310_logo"))), 310, 310)) { valid = false; - err += "\nInvalid square 310x310 logo image dimensions (should be 310x310)."; + err += TTR("Invalid square 310x310 logo image dimensions (should be 310x310).") + "\n"; } if (!p_preset->get("images/wide310x150_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/wide310x150_logo"))), 310, 150)) { valid = false; - err += "\nInvalid wide 310x150 logo image dimensions (should be 310x150)."; + err += TTR("Invalid wide 310x150 logo image dimensions (should be 310x150).") + "\n"; } if (!p_preset->get("images/splash_screen").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/splash_screen"))), 620, 300)) { valid = false; - err += "\nInvalid splash screen image dimensions (should be 620x300)."; + err += TTR("Invalid splash screen image dimensions (should be 620x300).") + "\n"; } r_error = err; diff --git a/platform/uwp/os_uwp.cpp b/platform/uwp/os_uwp.cpp index ea0193b8ed..ea4f63b49c 100644 --- a/platform/uwp/os_uwp.cpp +++ b/platform/uwp/os_uwp.cpp @@ -739,6 +739,11 @@ String OSUWP::get_environment(const String &p_var) const { return ""; }; +bool OSUWP::set_environment(const String &p_var, const String &p_value) const { + + return false; +} + String OSUWP::get_stdin_string(bool p_block) { return String(); diff --git a/platform/uwp/os_uwp.h b/platform/uwp/os_uwp.h index 491c9bce03..5475c4e60a 100644 --- a/platform/uwp/os_uwp.h +++ b/platform/uwp/os_uwp.h @@ -213,6 +213,7 @@ public: virtual bool has_environment(const String &p_var) const; virtual String get_environment(const String &p_var) const; + virtual bool set_environment(const String &p_var, const String &p_value) const; virtual void set_clipboard(const String &p_text); virtual String get_clipboard() const; diff --git a/platform/windows/detect.py b/platform/windows/detect.py index e14db9a201..0662bc2edc 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -208,8 +208,8 @@ def configure_msvc(env, manual_msvc_config): 'RTAUDIO_ENABLED', 'WASAPI_ENABLED', 'WINMIDI_ENABLED', 'TYPED_METHOD_BIND', 'WIN32', 'MSVC', - 'WINVER=$target_win_version', - '_WIN32_WINNT=$target_win_version']) + 'WINVER=%s' % env["target_win_version"], + '_WIN32_WINNT=%s' % env["target_win_version"]]) env.AppendUnique(CPPDEFINES=['NOMINMAX']) # disable bogus min/max WinDef.h macros if env["bits"] == "64": env.AppendUnique(CPPDEFINES=['_WIN64']) @@ -218,7 +218,7 @@ def configure_msvc(env, manual_msvc_config): LIBS = ['winmm', 'opengl32', 'dsound', 'kernel32', 'ole32', 'oleaut32', 'user32', 'gdi32', 'IPHLPAPI', 'Shlwapi', 'wsock32', 'Ws2_32', - 'shell32', 'advapi32', 'dinput8', 'dxguid', 'imm32', 'bcrypt'] + 'shell32', 'advapi32', 'dinput8', 'dxguid', 'imm32', 'bcrypt','Avrt'] env.Append(LINKFLAGS=[p + env["LIBSUFFIX"] for p in LIBS]) if manual_msvc_config: @@ -329,7 +329,7 @@ def configure_mingw(env): env.Append(CCFLAGS=['-DRTAUDIO_ENABLED']) env.Append(CCFLAGS=['-DWASAPI_ENABLED']) env.Append(CCFLAGS=['-DWINVER=%s' % env['target_win_version'], '-D_WIN32_WINNT=%s' % env['target_win_version']]) - env.Append(LIBS=['mingw32', 'opengl32', 'dsound', 'ole32', 'd3d9', 'winmm', 'gdi32', 'iphlpapi', 'shlwapi', 'wsock32', 'ws2_32', 'kernel32', 'oleaut32', 'dinput8', 'dxguid', 'ksuser', 'imm32', 'bcrypt']) + env.Append(LIBS=['mingw32', 'opengl32', 'dsound', 'ole32', 'd3d9', 'winmm', 'gdi32', 'iphlpapi', 'shlwapi', 'wsock32', 'ws2_32', 'kernel32', 'oleaut32', 'dinput8', 'dxguid', 'ksuser', 'imm32', 'bcrypt','avrt']) env.Append(CPPFLAGS=['-DMINGW_ENABLED']) diff --git a/platform/windows/export/export.cpp b/platform/windows/export/export.cpp index ca2f71ca18..141ab96370 100644 --- a/platform/windows/export/export.cpp +++ b/platform/windows/export/export.cpp @@ -73,7 +73,7 @@ Error EditorExportPlatformWindows::export_project(const Ref<EditorExportPreset> } #endif - String icon_path = p_preset->get("application/icon"); + String icon_path = ProjectSettings::get_singleton()->globalize_path(p_preset->get("application/icon")); String file_verion = p_preset->get("application/file_version"); String product_version = p_preset->get("application/product_version"); String company_name = p_preset->get("application/company_name"); @@ -137,7 +137,7 @@ Error EditorExportPlatformWindows::export_project(const Ref<EditorExportPreset> void EditorExportPlatformWindows::get_export_options(List<ExportOption> *r_options) { EditorExportPlatformPC::get_export_options(r_options); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/icon", PROPERTY_HINT_GLOBAL_FILE, "*.ico"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/icon", PROPERTY_HINT_FILE, "*.ico"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/file_version"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/product_version"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/company_name", PROPERTY_HINT_PLACEHOLDER_TEXT, "Company Name"), "")); diff --git a/platform/windows/joypad.cpp b/platform/windows/joypad.cpp index ba05d2e495..5fafc7c8c0 100644 --- a/platform/windows/joypad.cpp +++ b/platform/windows/joypad.cpp @@ -29,9 +29,9 @@ /*************************************************************************/ #include "joypad.h" + #include <oleauto.h> #include <wbemidl.h> -#include <iostream> #ifndef __GNUC__ #define __builtin_bswap32 _byteswap_ulong @@ -149,15 +149,12 @@ bool JoypadWindows::setup_dinput_joypad(const DIDEVICEINSTANCE *instance) { const DWORD devtype = (instance->dwDevType & 0xFF); if ((devtype != DI8DEVTYPE_JOYSTICK) && (devtype != DI8DEVTYPE_GAMEPAD) && (devtype != DI8DEVTYPE_1STPERSON)) { - //printf("ignore device %s, type %x\n", instance->tszProductName, devtype); return false; } hr = dinput->CreateDevice(instance->guidInstance, &joy->di_joy, NULL); if (FAILED(hr)) { - - //std::wcout << "failed to create device: " << instance->tszProductName << std::endl; return false; } @@ -383,8 +380,6 @@ void JoypadWindows::process_joypads() { hr = joy->di_joy->GetDeviceState(sizeof(DIJOYSTATE2), &js); if (FAILED(hr)) { - - //printf("failed to read joy #%d\n", i); continue; } diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index 3b41f1b901..9ae1be9afd 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -50,6 +50,7 @@ #include "servers/visual/visual_server_raster.h" #include "servers/visual/visual_server_wrap_mt.h" #include "windows_terminal_logger.h" +#include <avrt.h> #include <process.h> #include <regstr.h> @@ -783,7 +784,9 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_TIMER: { if (wParam == move_timer_id) { process_key_events(); - Main::iteration(); + if (!Main::is_iterating()) { + Main::iteration(); + } } } break; @@ -802,6 +805,13 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) gr_mem = alt_mem; } + if (mouse_mode == MOUSE_MODE_CAPTURED) { + // When SetCapture is used, ALT+F4 hotkey is ignored by Windows, so handle it ourselves + if (wParam == VK_F4 && alt_mem && (uMsg == WM_KEYDOWN || uMsg == WM_SYSKEYDOWN)) { + if (main_loop) + main_loop->notification(MainLoop::NOTIFICATION_WM_QUIT_REQUEST); + } + } /* if (wParam==VK_WIN) TODO wtf is this? meta_mem=uMsg==WM_KEYDOWN; @@ -1371,6 +1381,19 @@ Error OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int set_ime_active(false); + if (!OS::get_singleton()->is_in_low_processor_usage_mode()) { + //SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS); + SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS); + DWORD index = 0; + HANDLE handle = AvSetMmThreadCharacteristics("Games", &index); + if (handle) + AvSetMmThreadPriority(handle, AVRT_PRIORITY_CRITICAL); + + // This is needed to make sure that background work does not starve the main thread. + // This is only setting priority of this thread, not the whole process. + SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL); + } + return OK; } @@ -2319,6 +2342,9 @@ void OS_Windows::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shap iconinfo.hbmMask = hAndMask; iconinfo.hbmColor = hXorMask; + if (cursors[p_shape]) + DestroyIcon(cursors[p_shape]); + cursors[p_shape] = CreateIconIndirect(&iconinfo); if (p_shape == cursor_shape) { @@ -2578,6 +2604,11 @@ String OS_Windows::get_environment(const String &p_var) const { return ""; } +bool OS_Windows::set_environment(const String &p_var, const String &p_value) const { + + return (bool)SetEnvironmentVariableW(p_var.c_str(), p_value.c_str()); +} + String OS_Windows::get_stdin_string(bool p_block) { if (p_block) { diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h index 4936a69120..771789c86b 100644 --- a/platform/windows/os_windows.h +++ b/platform/windows/os_windows.h @@ -268,6 +268,7 @@ public: virtual bool has_environment(const String &p_var) const; virtual String get_environment(const String &p_var) const; + virtual bool set_environment(const String &p_var, const String &p_value) const; virtual void set_clipboard(const String &p_text); virtual String get_clipboard() const; diff --git a/platform/x11/SCsub b/platform/x11/SCsub index 97d3d1b514..e302f09c88 100644 --- a/platform/x11/SCsub +++ b/platform/x11/SCsub @@ -13,6 +13,7 @@ common_x11 = [ "key_mapping_x11.cpp", "joypad_linux.cpp", "power_x11.cpp", + "detect_prime.cpp" ] prog = env.add_program('#bin/godot', ['godot_x11.cpp'] + common_x11) diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 415e8ceaa6..72139538b7 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -61,8 +61,9 @@ def get_opts(): return [ BoolVariable('use_llvm', 'Use the LLVM compiler', False), BoolVariable('use_static_cpp', 'Link libgcc and libstdc++ statically for better portability', False), - BoolVariable('use_sanitizer', 'Use LLVM compiler address sanitizer', False), - BoolVariable('use_leak_sanitizer', 'Use LLVM compiler memory leaks sanitizer (implies use_sanitizer)', False), + BoolVariable('use_ubsan', 'Use LLVM/GCC compiler undefined behavior sanitizer (UBSAN)', False), + BoolVariable('use_asan', 'Use LLVM/GCC compiler address sanitizer (ASAN))', False), + BoolVariable('use_lsan', 'Use LLVM/GCC compiler leak sanitizer (LSAN))', False), BoolVariable('pulseaudio', 'Detect & use pulseaudio', True), BoolVariable('udev', 'Use udev for gamepad connection callbacks', False), EnumVariable('debug_symbols', 'Add debugging symbols to release builds', 'yes', ('yes', 'no', 'full')), @@ -131,12 +132,19 @@ def configure(env): env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) env.extra_suffix = ".llvm" + env.extra_suffix - # leak sanitizer requires (address) sanitizer - if env['use_sanitizer'] or env['use_leak_sanitizer']: - env.Append(CCFLAGS=['-fsanitize=address', '-fno-omit-frame-pointer']) - env.Append(LINKFLAGS=['-fsanitize=address']) + + if env['use_ubsan'] or env['use_asan'] or env['use_lsan']: env.extra_suffix += "s" - if env['use_leak_sanitizer']: + + if env['use_ubsan']: + env.Append(CCFLAGS=['-fsanitize=undefined']) + env.Append(LINKFLAGS=['-fsanitize=undefined']) + + if env['use_asan']: + env.Append(CCFLAGS=['-fsanitize=address']) + env.Append(LINKFLAGS=['-fsanitize=address']) + + if env['use_lsan']: env.Append(CCFLAGS=['-fsanitize=leak']) env.Append(LINKFLAGS=['-fsanitize=leak']) diff --git a/platform/x11/detect_prime.cpp b/platform/x11/detect_prime.cpp new file mode 100644 index 0000000000..04a825fac9 --- /dev/null +++ b/platform/x11/detect_prime.cpp @@ -0,0 +1,233 @@ +/*************************************************************************/ +/* detect_prime.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md) */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#ifdef X11_ENABLED +#if defined(OPENGL_ENABLED) + +#include "core/print_string.h" +#include "core/ustring.h" + +#include <stdlib.h> + +#include <GL/gl.h> +#include <GL/glx.h> +#include <X11/Xlib.h> +#include <X11/Xutil.h> + +#include <cstring> + +#include <sys/types.h> +#include <sys/wait.h> +#include <unistd.h> + +#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 + +typedef GLXContext (*GLXCREATECONTEXTATTRIBSARBPROC)(Display *, GLXFBConfig, GLXContext, Bool, const int *); + +struct vendor { + const char *glxvendor; + int priority; +}; + +vendor vendormap[] = { + { "Advanced Micro Devices, Inc.", 30 }, + { "NVIDIA Corporation", 30 }, + { "X.Org", 30 }, + { "Intel Open Source Technology Center", 20 }, + { "nouveau", 10 }, + { "Mesa Project", 0 }, + { NULL, 0 } +}; + +// Runs inside a child. Exiting will not quit the engine. +void create_context() { + Display *x11_display = XOpenDisplay(NULL); + Window x11_window; + GLXContext glx_context; + + GLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB = (GLXCREATECONTEXTATTRIBSARBPROC)glXGetProcAddress((const GLubyte *)"glXCreateContextAttribsARB"); + + static int visual_attribs[] = { + GLX_RENDER_TYPE, GLX_RGBA_BIT, + GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT, + GLX_DOUBLEBUFFER, true, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + GLX_DEPTH_SIZE, 24, + None + }; + + int fbcount; + GLXFBConfig fbconfig = 0; + XVisualInfo *vi = NULL; + + XSetWindowAttributes swa; + swa.event_mask = StructureNotifyMask; + swa.border_pixel = 0; + unsigned long valuemask = CWBorderPixel | CWColormap | CWEventMask; + + GLXFBConfig *fbc = glXChooseFBConfig(x11_display, DefaultScreen(x11_display), visual_attribs, &fbcount); + if (!fbc) + exit(1); + + vi = glXGetVisualFromFBConfig(x11_display, fbc[0]); + + fbconfig = fbc[0]; + + static int context_attribs[] = { + GLX_CONTEXT_MAJOR_VERSION_ARB, 3, + GLX_CONTEXT_MINOR_VERSION_ARB, 3, + GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB, + GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB, + None + }; + + glx_context = glXCreateContextAttribsARB(x11_display, fbconfig, NULL, true, context_attribs); + + swa.colormap = XCreateColormap(x11_display, RootWindow(x11_display, vi->screen), vi->visual, AllocNone); + x11_window = XCreateWindow(x11_display, RootWindow(x11_display, vi->screen), 0, 0, 10, 10, 0, vi->depth, InputOutput, vi->visual, valuemask, &swa); + + if (!x11_window) + exit(1); + + glXMakeCurrent(x11_display, x11_window, glx_context); + XFree(vi); +} + +int detect_prime() { + pid_t p; + int priorities[2]; + String vendors[2]; + String renderers[2]; + + vendors[0] = "Unknown"; + vendors[1] = "Unknown"; + renderers[0] = "Unknown"; + renderers[1] = "Unknown"; + + for (int i = 0; i < 2; ++i) { + int fdset[2]; + + if (pipe(fdset) == -1) { + print_verbose("Failed to pipe(), using default GPU"); + return 0; + } + + // Fork so the driver initialization can crash without taking down the engine. + p = fork(); + + if (p > 0) { + // Main thread + + int stat_loc = 0; + char string[201]; + string[200] = '\0'; + + close(fdset[1]); + + waitpid(p, &stat_loc, 0); + + if (!stat_loc) { + // No need to do anything complicated here. Anything less than + // PIPE_BUF will be delivered in one read() call. + read(fdset[0], string, sizeof(string) - 1); + + vendors[i] = string; + renderers[i] = string + strlen(string) + 1; + } + + close(fdset[0]); + + } else { + // In child, exit() here will not quit the engine. + + char string[201]; + + close(fdset[0]); + + if (i) setenv("DRI_PRIME", "1", 1); + create_context(); + + const char *vendor = (const char *)glGetString(GL_VENDOR); + const char *renderer = (const char *)glGetString(GL_RENDERER); + + int vendor_len = strlen(vendor) + 1; + int renderer_len = strlen(renderer) + 1; + + if (vendor_len + renderer_len >= sizeof(string)) { + renderer_len = 200 - vendor_len; + } + + memcpy(&string, vendor, vendor_len); + memcpy(&string[vendor_len], renderer, renderer_len); + + write(fdset[1], string, vendor_len + renderer_len); + + close(fdset[1]); + exit(0); + } + } + + int preferred = 0; + int priority = 0; + + if (vendors[0] == vendors[1]) { + print_verbose("Only one GPU found, using default."); + return 0; + } + + for (int i = 1; i >= 0; --i) { + vendor *v = vendormap; + while (v->glxvendor) { + if (v->glxvendor == vendors[i]) { + priorities[i] = v->priority; + + if (v->priority >= priority) { + priority = v->priority; + preferred = i; + } + } + ++v; + } + } + + print_verbose("Found renderers:"); + for (int i = 0; i < 2; ++i) { + print_verbose("Renderer " + itos(i) + ": " + renderers[i] + " with priority: " + itos(priorities[i])); + } + + print_verbose("Using renderer: " + renderers[preferred]); + return preferred; +} + +#endif +#endif diff --git a/main/tests/test_image.h b/platform/x11/detect_prime.h index b9b3c0cb48..13bcf6fc38 100644 --- a/main/tests/test_image.h +++ b/platform/x11/detect_prime.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* test_image.h */ +/* detect_prime.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -28,18 +28,10 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#ifndef TEST_IMAGE_H -#define TEST_IMAGE_H +#ifdef X11_ENABLED +#if defined(OPENGL_ENABLED) -/** - @author Juan Linietsky <reduzio@gmail.com> -*/ - -#include "core/os/main_loop.h" - -namespace TestImage { - -MainLoop *test(); -} +int detect_prime(); #endif +#endif diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 0db79fa3e9..e0924fc982 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -29,6 +29,8 @@ /*************************************************************************/ #include "os_x11.h" +#include "detect_prime.h" + #include "core/os/dir_access.h" #include "core/print_string.h" #include "drivers/gles2/rasterizer_gles2.h" @@ -240,28 +242,15 @@ Error OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_a // maybe contextgl wants to be in charge of creating the window #if defined(OPENGL_ENABLED) - // Set DRI_PRIME if not set. This means that Godot should default to a higher-power GPU if it exists. - // Note: Due to the final '0' parameter to setenv any existing DRI_PRIME environment variables will not - // be overwritten. - bool enable_dri_prime = true; - // Check if Nouveau is loaded, we don't want to force dGPU usage with that driver. - if (FileAccess *f = FileAccess::open("/proc/modules", FileAccess::READ)) { - // Match driver name + space - String nouveau_str = "nouveau "; - - while (!f->eof_reached()) { - String line = f->get_line(); - - if (line.begins_with(nouveau_str)) { - enable_dri_prime = false; - break; - } + if (getenv("DRI_PRIME") == NULL) { + print_verbose("Detecting GPUs, set DRI_PRIME in the environment to override GPU detection logic."); + int use_prime = detect_prime(); + + if (use_prime) { + print_line("Found discrete GPU, setting DRI_PRIME=1 to use it."); + print_line("Note: Set DRI_PRIME=0 in the environment to disable Godot from using the discrete GPU."); + setenv("DRI_PRIME", "1", 1); } - f->close(); - memdelete(f); - } - if (enable_dri_prime) { - setenv("DRI_PRIME", "1", 0); } ContextGL_X11::ContextType opengl_api_type = ContextGL_X11::GLES_3_0_COMPATIBLE; diff --git a/scene/2d/animated_sprite.cpp b/scene/2d/animated_sprite.cpp index 707e95e271..28ddf6b5f8 100644 --- a/scene/2d/animated_sprite.cpp +++ b/scene/2d/animated_sprite.cpp @@ -395,8 +395,8 @@ void AnimatedSprite::_notification(int p_what) { int fc = frames->get_frame_count(animation); if (frame >= fc - 1) { if (frames->get_animation_loop(animation)) { - emit_signal(SceneStringNames::get_singleton()->animation_finished); frame = 0; + emit_signal(SceneStringNames::get_singleton()->animation_finished); } else { frame = fc - 1; if (!is_over) { diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp index 6ed008cf9c..41cee7335e 100644 --- a/scene/2d/canvas_item.cpp +++ b/scene/2d/canvas_item.cpp @@ -134,7 +134,7 @@ void CanvasItemMaterial::_update_shader() { code += "\tint total_frames = particles_anim_h_frames * particles_anim_v_frames;\n"; code += "\tint frame = int(float(total_frames) * INSTANCE_CUSTOM.z);\n"; code += "\tif (particles_anim_loop) {\n"; - code += "\t\tframe = abs(frame) % total_frames;\n"; + code += "\t\tframe = int(abs(frame) % total_frames);\n"; code += "\t} else {\n"; code += "\t\tframe = clamp(frame, 0, total_frames - 1);\n"; code += "\t}\n"; @@ -434,6 +434,11 @@ void CanvasItem::hide() { _change_notify("visible"); } +CanvasItem *CanvasItem::current_item_drawn = NULL; +CanvasItem *CanvasItem::get_current_item_drawn() { + return current_item_drawn; +} + void CanvasItem::_update_callback() { if (!is_inside_tree()) { @@ -449,11 +454,13 @@ void CanvasItem::_update_callback() { first_draw = false; } drawing = true; + current_item_drawn = this; notification(NOTIFICATION_DRAW); emit_signal(SceneStringNames::get_singleton()->draw); if (get_script_instance()) { get_script_instance()->call_multilevel_reversed(SceneStringNames::get_singleton()->_draw, NULL, 0); } + current_item_drawn = NULL; drawing = false; } //todo updating = false diff --git a/scene/2d/canvas_item.h b/scene/2d/canvas_item.h index a02e792cf2..bf7cfa8e75 100644 --- a/scene/2d/canvas_item.h +++ b/scene/2d/canvas_item.h @@ -222,6 +222,8 @@ private: void _set_on_top(bool p_on_top) { set_draw_behind_parent(!p_on_top); } bool _is_on_top() const { return !is_draw_behind_parent_enabled(); } + static CanvasItem *current_item_drawn; + protected: _FORCE_INLINE_ void _notify_transform() { if (!is_inside_tree()) return; @@ -324,6 +326,8 @@ public: void draw_set_transform(const Point2 &p_offset, float p_rot, const Size2 &p_scale); void draw_set_transform_matrix(const Transform2D &p_matrix); + static CanvasItem *get_current_item_drawn(); + /* RECT / TRANSFORM */ void set_as_toplevel(bool p_toplevel); diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp index 36b900bf82..eaed1da0ba 100644 --- a/scene/2d/cpu_particles_2d.cpp +++ b/scene/2d/cpu_particles_2d.cpp @@ -594,7 +594,7 @@ void CPUParticles2D::_particles_process(float p_delta) { if (restart_time >= prev_time) { restart = true; if (fractional_delta) { - local_delta = (1.0 - restart_time + time) * lifetime; + local_delta = (lifetime - restart_time + time) * lifetime; } } else if (restart_time < time) { @@ -840,7 +840,7 @@ void CPUParticles2D::_particles_process(float p_delta) { if (flags[FLAG_ALIGN_Y_TO_VELOCITY]) { if (p.velocity.length() > 0.0) { - p.transform.elements[0] = p.velocity.normalized(); + p.transform.elements[1] = p.velocity.normalized(); p.transform.elements[0] = p.transform.elements[1].tangent(); } @@ -1378,6 +1378,7 @@ CPUParticles2D::CPUParticles2D() { set_param(PARAM_INITIAL_LINEAR_VELOCITY, 1); //set_param(PARAM_ORBIT_VELOCITY, 0); set_param(PARAM_LINEAR_ACCEL, 0); + set_param(PARAM_ANGULAR_VELOCITY, 0); set_param(PARAM_RADIAL_ACCEL, 0); set_param(PARAM_TANGENTIAL_ACCEL, 0); set_param(PARAM_DAMPING, 0); diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp index d7ed6f8f49..d1fce74085 100644 --- a/scene/2d/light_2d.cpp +++ b/scene/2d/light_2d.cpp @@ -431,7 +431,7 @@ void Light2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "enabled"), "set_enabled", "is_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_only"), "set_editor_only", "is_editor_only"); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "StreamTexture,ImageTexture"), "set_texture", "get_texture"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture"); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_texture_offset", "get_texture_offset"); ADD_PROPERTY(PropertyInfo(Variant::REAL, "texture_scale", PROPERTY_HINT_RANGE, "0.01,50,0.01"), "set_texture_scale", "get_texture_scale"); ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color"); diff --git a/scene/2d/particles_2d.cpp b/scene/2d/particles_2d.cpp index c005c33a19..9701998f5d 100644 --- a/scene/2d/particles_2d.cpp +++ b/scene/2d/particles_2d.cpp @@ -30,6 +30,7 @@ #include "particles_2d.h" +#include "core/os/os.h" #include "scene/resources/particles_material.h" #include "scene/scene_string_names.h" @@ -213,6 +214,10 @@ bool Particles2D::get_fractional_delta() const { String Particles2D::get_configuration_warning() const { + if (OS::get_singleton()->get_current_video_driver() == OS::VIDEO_DRIVER_GLES2) { + return TTR("GPU-based particles are not supported by the GLES2 video driver.\nUse the CPUParticles2D node instead. You can use the \"Convert to CPUParticles\" option for this purpose."); + } + String warnings; if (process_material.is_null()) { diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp index fd28b876f3..ed9374e422 100644 --- a/scene/3d/camera.cpp +++ b/scene/3d/camera.cpp @@ -495,6 +495,7 @@ void Camera::_bind_methods() { ClassDB::bind_method(D_METHOD("get_keep_aspect_mode"), &Camera::get_keep_aspect_mode); ClassDB::bind_method(D_METHOD("set_doppler_tracking", "mode"), &Camera::set_doppler_tracking); ClassDB::bind_method(D_METHOD("get_doppler_tracking"), &Camera::get_doppler_tracking); + ClassDB::bind_method(D_METHOD("get_frustum"), &Camera::get_frustum); ClassDB::bind_method(D_METHOD("set_cull_mask_bit", "layer", "enable"), &Camera::set_cull_mask_bit); ClassDB::bind_method(D_METHOD("get_cull_mask_bit", "layer"), &Camera::get_cull_mask_bit); diff --git a/scene/3d/particles.cpp b/scene/3d/particles.cpp index 2add50dd5d..78b2958400 100644 --- a/scene/3d/particles.cpp +++ b/scene/3d/particles.cpp @@ -29,6 +29,8 @@ /*************************************************************************/ #include "particles.h" + +#include "core/os/os.h" #include "scene/resources/particles_material.h" #include "servers/visual_server.h" @@ -224,6 +226,10 @@ bool Particles::get_fractional_delta() const { String Particles::get_configuration_warning() const { + if (OS::get_singleton()->get_current_video_driver() == OS::VIDEO_DRIVER_GLES2) { + return TTR("GPU-based particles are not supported by the GLES2 video driver.\nUse the CPUParticles node instead. You can use the \"Convert to CPUParticles\" option for this purpose."); + } + String warnings; bool meshes_found = false; diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp index 22da51ac30..50abbd483a 100644 --- a/scene/3d/physics_body.cpp +++ b/scene/3d/physics_body.cpp @@ -188,7 +188,7 @@ PhysicsBody::PhysicsBody(PhysicsServer::BodyMode p_mode) : #ifndef DISABLE_DEPRECATED void StaticBody::set_friction(real_t p_friction) { - if (p_friction == 1.0) { // default value, don't create an override for that + if (p_friction == 1.0 && physics_material_override.is_null()) { // default value, don't create an override for that return; } @@ -218,7 +218,7 @@ real_t StaticBody::get_friction() const { void StaticBody::set_bounce(real_t p_bounce) { - if (p_bounce == 0.0) { // default value, don't create an override for that + if (p_bounce == 0.0 && physics_material_override.is_null()) { // default value, don't create an override for that return; } @@ -632,7 +632,7 @@ real_t RigidBody::get_weight() const { #ifndef DISABLE_DEPRECATED void RigidBody::set_friction(real_t p_friction) { - if (p_friction == 1.0) { // default value, don't create an override for that + if (p_friction == 1.0 && physics_material_override.is_null()) { // default value, don't create an override for that return; } @@ -661,7 +661,7 @@ real_t RigidBody::get_friction() const { void RigidBody::set_bounce(real_t p_bounce) { - if (p_bounce == 0.0) { // default value, don't create an override for that + if (p_bounce == 0.0 && physics_material_override.is_null()) { // default value, don't create an override for that return; } diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp index a3fa2ac98d..6b70eef662 100644 --- a/scene/3d/sprite_3d.cpp +++ b/scene/3d/sprite_3d.cpp @@ -382,36 +382,30 @@ void Sprite3D::_draw() { VS::get_singleton()->immediate_clear(immediate); if (!texture.is_valid()) - return; //no texuture no life + return; Vector2 tsize = texture->get_size(); if (tsize.x == 0 || tsize.y == 0) return; - Size2i s; - Rect2 src_rect; - - if (region) { - - s = region_rect.size; - src_rect = region_rect; - } else { - s = texture->get_size(); - s = s / Size2(hframes, vframes); + Rect2 base_rect; + if (region) + base_rect = region_rect; + else + base_rect = Rect2(0, 0, texture->get_width(), texture->get_height()); - src_rect.size = s; - src_rect.position.x += (frame % hframes) * s.x; - src_rect.position.y += (frame / hframes) * s.y; - } + Size2 frame_size = base_rect.size / Size2(hframes, vframes); + Point2 frame_offset = Point2(frame % hframes, frame / hframes); + frame_offset *= frame_size; - Point2 ofs = get_offset(); + Point2 dest_offset = get_offset(); if (is_centered()) - ofs -= s / 2; - - Rect2 dst_rect(ofs, s); + dest_offset -= frame_size / 2; + Rect2 src_rect(base_rect.position + frame_offset, frame_size); + Rect2 final_dst_rect(dest_offset, frame_size); Rect2 final_rect; Rect2 final_src_rect; - if (!texture->get_rect_region(dst_rect, src_rect, final_rect, final_src_rect)) + if (!texture->get_rect_region(final_dst_rect, src_rect, final_rect, final_src_rect)) return; if (final_rect.size.x == 0 || final_rect.size.y == 0) diff --git a/scene/animation/animation_blend_space_2d.cpp b/scene/animation/animation_blend_space_2d.cpp index d744d6cc8e..1fe14e633b 100644 --- a/scene/animation/animation_blend_space_2d.cpp +++ b/scene/animation/animation_blend_space_2d.cpp @@ -320,7 +320,6 @@ void AnimationNodeBlendSpace2D::_update_triangles() { if (!auto_triangles || !trianges_dirty) return; - print_line("updating triangles"); trianges_dirty = false; triangles.clear(); if (blend_points_used < 3) { @@ -336,8 +335,6 @@ void AnimationNodeBlendSpace2D::_update_triangles() { Vector<Delaunay2D::Triangle> triangles = Delaunay2D::triangulate(points); - print_line("triangles generated: " + itos(triangles.size())); - for (int i = 0; i < triangles.size(); i++) { add_triangle(triangles[i].points[0], triangles[i].points[1], triangles[i].points[2]); } diff --git a/scene/animation/animation_blend_tree.cpp b/scene/animation/animation_blend_tree.cpp index a343a4f0ed..0daa574f72 100644 --- a/scene/animation/animation_blend_tree.cpp +++ b/scene/animation/animation_blend_tree.cpp @@ -141,10 +141,14 @@ void AnimationNodeOneShot::get_parameter_list(List<PropertyInfo> *r_list) const r_list->push_back(PropertyInfo(Variant::BOOL, prev_active, PROPERTY_HINT_NONE, "", 0)); r_list->push_back(PropertyInfo(Variant::REAL, time, PROPERTY_HINT_NONE, "", 0)); r_list->push_back(PropertyInfo(Variant::REAL, remaining, PROPERTY_HINT_NONE, "", 0)); + r_list->push_back(PropertyInfo(Variant::REAL, time_to_restart, PROPERTY_HINT_NONE, "", 0)); } + Variant AnimationNodeOneShot::get_parameter_default_value(const StringName &p_parameter) const { if (p_parameter == active || p_parameter == prev_active) { return false; + } else if (p_parameter == time_to_restart) { + return -1; } else { return 0.0; } @@ -218,13 +222,26 @@ float AnimationNodeOneShot::process(float p_time, bool p_seek) { bool prev_active = get_parameter(this->prev_active); float time = get_parameter(this->time); float remaining = get_parameter(this->remaining); + float time_to_restart = get_parameter(this->time_to_restart); if (!active) { //make it as if this node doesn't exist, pass input 0 by. if (prev_active) { set_parameter(this->prev_active, false); } - return blend_input(0, p_time, p_seek, 1.0, FILTER_IGNORE, !sync); + if (time_to_restart >= 0.0 && !p_seek) { + time_to_restart -= p_time; + if (time_to_restart < 0) { + //restart + set_parameter(this->active, true); + active = true; + } + set_parameter(this->time_to_restart, time_to_restart); + } + + if (!active) { + return blend_input(0, p_time, p_seek, 1.0, FILTER_IGNORE, !sync); + } } bool os_seek = p_seek; @@ -276,6 +293,10 @@ float AnimationNodeOneShot::process(float p_time, bool p_seek) { if (remaining <= 0) { set_parameter(this->active, false); set_parameter(this->prev_active, false); + if (autorestart) { + float restart_sec = autorestart_delay + Math::randf() * autorestart_random_delay; + set_parameter(this->time_to_restart, restart_sec); + } } } @@ -350,6 +371,7 @@ AnimationNodeOneShot::AnimationNodeOneShot() { prev_active = "prev_active"; time = "time"; remaining = "remaining"; + time_to_restart = "time_to_restart"; } //////////////////////////////////////////////// diff --git a/scene/animation/animation_blend_tree.h b/scene/animation/animation_blend_tree.h index e207713134..c16dcb1b8c 100644 --- a/scene/animation/animation_blend_tree.h +++ b/scene/animation/animation_blend_tree.h @@ -91,6 +91,7 @@ private: StringName prev_active; StringName time; StringName remaining; + StringName time_to_restart; protected: static void _bind_methods(); diff --git a/scene/animation/animation_node_state_machine.cpp b/scene/animation/animation_node_state_machine.cpp index 56faba27cf..08cc655cdd 100644 --- a/scene/animation/animation_node_state_machine.cpp +++ b/scene/animation/animation_node_state_machine.cpp @@ -373,7 +373,7 @@ float AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *sm, if (fading_from != StringName()) { - sm->blend_node(current, sm->states[fading_from].node, p_time, p_seek, 1.0 - fade_blend, AnimationNode::FILTER_IGNORE, false); + sm->blend_node(fading_from, sm->states[fading_from].node, p_time, p_seek, 1.0 - fade_blend, AnimationNode::FILTER_IGNORE, false); } //guess playback position diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp index 1d2001c30d..4c249b117e 100644 --- a/scene/animation/animation_player.cpp +++ b/scene/animation/animation_player.cpp @@ -344,10 +344,16 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, float for (int i = 0; i < a->get_track_count(); i++) { + // If an animation changes this animation (or it animates itself) + // we need to recreate our animation cache + if (p_anim->node_cache.size() != a->get_track_count()) { + _ensure_node_caches(p_anim); + } + TrackNodeCache *nc = p_anim->node_cache[i]; - if (!nc) // no node cache for this track, skip it - continue; + if (!nc) + continue; // no node cache for this track, skip it if (!a->track_is_enabled(i)) continue; // do nothing if the track is disabled diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp index 706717a8e3..c32001dbcd 100644 --- a/scene/animation/animation_tree.cpp +++ b/scene/animation/animation_tree.cpp @@ -685,6 +685,10 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) { track = track_animation; } break; + default: { + ERR_PRINT("Animation corrupted (invalid track type)"); + continue; + } } track_cache[path] = track; @@ -853,6 +857,9 @@ void AnimationTree::_process_graph(float p_delta) { for (int i = 0; i < a->get_track_count(); i++) { NodePath path = a->track_get_path(i); + + ERR_CONTINUE(!track_cache.has(path)); + TrackCache *track = track_cache[path]; if (track->type != a->track_get_type(i)) { continue; //may happen should not diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp index a6b4d475ba..806c8afa5b 100644 --- a/scene/gui/base_button.cpp +++ b/scene/gui/base_button.cpp @@ -82,16 +82,16 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) { get_script_instance()->call(SceneStringNames::get_singleton()->_pressed, NULL, 0, ce); } - emit_signal("pressed"); _unpress_group(); + emit_signal("pressed"); } else { status.pressed = !status.pressed; pressed(); - emit_signal("pressed"); _unpress_group(); + emit_signal("pressed"); toggled(status.pressed); if (get_script_instance()) { @@ -135,6 +135,7 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) { get_script_instance()->call(SceneStringNames::get_singleton()->_pressed, NULL, 0, ce); } + _unpress_group(); emit_signal("pressed"); } else { @@ -142,6 +143,7 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) { status.pressed = !status.pressed; pressed(); + _unpress_group(); emit_signal("pressed"); toggled(status.pressed); @@ -150,8 +152,6 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) { } emit_signal("toggled", status.pressed); } - - _unpress_group(); } status.press_attempt = false; @@ -215,12 +215,14 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) { get_script_instance()->call(SceneStringNames::get_singleton()->_pressed, NULL, 0, ce); } + _unpress_group(); emit_signal("pressed"); } else { status.pressed = !status.pressed; pressed(); + _unpress_group(); emit_signal("pressed"); toggled(status.pressed); @@ -229,8 +231,6 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) { } emit_signal("toggled", status.pressed); } - - _unpress_group(); } accept_event(); diff --git a/scene/gui/box_container.cpp b/scene/gui/box_container.cpp index 35e8e984cd..cc37d4cf7d 100644 --- a/scene/gui/box_container.cpp +++ b/scene/gui/box_container.cpp @@ -255,6 +255,10 @@ void BoxContainer::_notification(int p_what) { _resort(); } break; + case NOTIFICATION_THEME_CHANGED: { + + minimum_size_changed(); + } break; } } diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index 6ed465562e..7aca6acd00 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -35,6 +35,7 @@ #include "core/os/os.h" #ifdef TOOLS_ENABLED +#include "editor_scale.h" #include "editor_settings.h" #endif @@ -81,11 +82,8 @@ void ColorPicker::_notification(int p_what) { } break; case MainLoop::NOTIFICATION_WM_QUIT_REQUEST: { - if (screen != NULL) { - if (screen->is_visible()) { - screen->hide(); - } - } + if (screen != NULL && screen->is_visible()) + screen->hide(); } break; } } @@ -156,7 +154,7 @@ void ColorPicker::_value_changed(double) { void ColorPicker::_html_entered(const String &p_html) { - if (updating) + if (updating || text_is_constructor || !c_text->is_visible()) return; float last_alpha = color.a; @@ -211,15 +209,18 @@ void ColorPicker::_update_presets() { } void ColorPicker::_text_type_toggled() { - if (!Engine::get_singleton()->is_editor_hint()) - return; + text_is_constructor = !text_is_constructor; if (text_is_constructor) { text_type->set_text(""); text_type->set_icon(get_icon("Script", "EditorIcons")); + + c_text->set_editable(false); } else { text_type->set_text("#"); text_type->set_icon(NULL); + + c_text->set_editable(true); } _update_color(); } @@ -304,19 +305,21 @@ bool ColorPicker::is_deferred_mode() const { void ColorPicker::_update_text_value() { bool visible = true; if (text_is_constructor) { - String t = "Color(" + String::num(color.r) + "," + String::num(color.g) + "," + String::num(color.b); + String t = "Color(" + String::num(color.r) + ", " + String::num(color.g) + ", " + String::num(color.b); if (edit_alpha && color.a < 1) - t += ("," + String::num(color.a) + ")"); + t += ", " + String::num(color.a) + ")"; else t += ")"; c_text->set_text(t); - } else { - if (color.r > 1 || color.g > 1 || color.b > 1 || color.r < 0 || color.g < 0 || color.b < 0) { - visible = false; - } else { - c_text->set_text(color.to_html(edit_alpha && color.a < 1)); - } } + + if (color.r > 1 || color.g > 1 || color.b > 1 || color.r < 0 || color.g < 0 || color.b < 0) { + visible = false; + } else if (!text_is_constructor) { + c_text->set_text(color.to_html(edit_alpha && color.a < 1)); + } + + text_type->set_visible(visible); c_text->set_visible(visible); } @@ -494,21 +497,17 @@ void ColorPicker::_preset_input(const Ref<InputEvent> &p_event) { void ColorPicker::_screen_input(const Ref<InputEvent> &p_event) { Ref<InputEventMouseButton> bev = p_event; - - if (bev.is_valid()) { - - if (bev->get_button_index() == BUTTON_LEFT && !bev->is_pressed()) { - emit_signal("color_changed", color); - screen->hide(); - } + if (bev.is_valid() && bev->get_button_index() == BUTTON_LEFT && !bev->is_pressed()) { + emit_signal("color_changed", color); + screen->hide(); } Ref<InputEventMouseMotion> mev = p_event; - if (mev.is_valid()) { Viewport *r = get_tree()->get_root(); if (!r->get_visible_rect().has_point(Point2(mev->get_global_position().x, mev->get_global_position().y))) return; + Ref<Image> img = r->get_texture()->get_data(); if (img.is_valid() && !img->empty()) { img->lock(); @@ -534,6 +533,8 @@ void ColorPicker::_screen_pick_pressed() { screen->set_anchors_and_margins_preset(Control::PRESET_WIDE); screen->set_default_cursor_shape(CURSOR_POINTING_HAND); screen->connect("gui_input", this, "_screen_input"); + // It immediately toggles off in the first press otherwise. + screen->call_deferred("connect", "hide", btn_pick, "set_pressed", varray(false)); } screen->raise(); screen->show_modal(); @@ -615,22 +616,25 @@ ColorPicker::ColorPicker() : screen = NULL; HBoxContainer *hb_smpl = memnew(HBoxContainer); - btn_pick = memnew(ToolButton); - btn_pick->connect("pressed", this, "_screen_pick_pressed"); + add_child(hb_smpl); sample = memnew(TextureRect); + hb_smpl->add_child(sample); sample->set_h_size_flags(SIZE_EXPAND_FILL); sample->connect("draw", this, "_sample_draw"); - hb_smpl->add_child(sample); + btn_pick = memnew(ToolButton); hb_smpl->add_child(btn_pick); - add_child(hb_smpl); + btn_pick->set_toggle_mode(true); + btn_pick->set_tooltip(TTR("Pick a color from the screen.")); + btn_pick->connect("pressed", this, "_screen_pick_pressed"); HBoxContainer *hb_edit = memnew(HBoxContainer); + add_child(hb_edit); hb_edit->set_v_size_flags(SIZE_EXPAND_FILL); uv_edit = memnew(Control); - + hb_edit->add_child(uv_edit); uv_edit->connect("gui_input", this, "_uv_input"); uv_edit->set_mouse_filter(MOUSE_FILTER_PASS); uv_edit->set_h_size_flags(SIZE_EXPAND_FILL); @@ -638,19 +642,14 @@ ColorPicker::ColorPicker() : uv_edit->set_custom_minimum_size(Size2(get_constant("sv_width"), get_constant("sv_height"))); uv_edit->connect("draw", this, "_hsv_draw", make_binds(0, uv_edit)); - add_child(hb_edit); - w_edit = memnew(Control); + hb_edit->add_child(w_edit); w_edit->set_custom_minimum_size(Size2(get_constant("h_width"), 0)); w_edit->set_h_size_flags(SIZE_FILL); w_edit->set_v_size_flags(SIZE_EXPAND_FILL); w_edit->connect("gui_input", this, "_w_input"); w_edit->connect("draw", this, "_hsv_draw", make_binds(1, w_edit)); - hb_edit->add_child(uv_edit); - hb_edit->add_child(memnew(VSeparator)); - hb_edit->add_child(w_edit); - VBoxContainer *vbl = memnew(VBoxContainer); add_child(vbl); @@ -691,31 +690,43 @@ ColorPicker::ColorPicker() : } HBoxContainer *hhb = memnew(HBoxContainer); + vbr->add_child(hhb); btn_mode = memnew(CheckButton); + hhb->add_child(btn_mode); btn_mode->set_text(TTR("Raw Mode")); btn_mode->connect("toggled", this, "set_raw_mode"); - hhb->add_child(btn_mode); - vbr->add_child(hhb); + text_type = memnew(Button); - text_type->set_flat(true); - text_type->connect("pressed", this, "_text_type_toggled"); hhb->add_child(text_type); + text_type->set_text("#"); + text_type->set_tooltip(TTR("Switch between hexadecimal and code values.")); + if (Engine::get_singleton()->is_editor_hint()) { + +#ifdef TOOLS_ENABLED + text_type->set_custom_minimum_size(Size2(28 * EDSCALE, 0)); // Adjust for the width of the "Script" icon. +#endif + text_type->connect("pressed", this, "_text_type_toggled"); + } else { + + text_type->set_flat(true); + text_type->set_mouse_filter(MOUSE_FILTER_IGNORE); + } c_text = memnew(LineEdit); hhb->add_child(c_text); + c_text->set_h_size_flags(SIZE_EXPAND_FILL); c_text->connect("text_entered", this, "_html_entered"); c_text->connect("focus_entered", this, "_focus_enter"); c_text->connect("focus_exited", this, "_html_focus_exit"); - text_type->set_text("#"); - c_text->set_h_size_flags(SIZE_EXPAND_FILL); - _update_controls(); updating = false; set_pick_color(Color(1, 1, 1)); + add_child(memnew(HSeparator)); + HBoxContainer *bbc = memnew(HBoxContainer); add_child(bbc); @@ -725,9 +736,9 @@ ColorPicker::ColorPicker() : preset->connect("draw", this, "_update_presets"); bt_add_preset = memnew(Button); - bt_add_preset->set_tooltip(TTR("Add current color as a preset")); - bt_add_preset->connect("pressed", this, "_add_preset_pressed"); bbc->add_child(bt_add_preset); + bt_add_preset->set_tooltip(TTR("Add current color as a preset.")); + bt_add_preset->connect("pressed", this, "_add_preset_pressed"); } ///////////////// @@ -838,9 +849,9 @@ void ColorPickerButton::_bind_methods() { ColorPickerButton::ColorPickerButton() { - //Initialization is now done deferred - //this improves performance in the inspector as the color picker - //can be expensive to initialize + // Initialization is now done deferred, + // this improves performance in the inspector as the color picker + // can be expensive to initialize. picker = NULL; popup = NULL; edit_alpha = true; diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp index 7c879d239c..8c588109d6 100644 --- a/scene/gui/graph_node.cpp +++ b/scene/gui/graph_node.cpp @@ -192,97 +192,104 @@ bool GraphNode::has_point(const Point2 &p_point) const { void GraphNode::_notification(int p_what) { - if (p_what == NOTIFICATION_DRAW) { + switch (p_what) { + case NOTIFICATION_DRAW: { - Ref<StyleBox> sb; + Ref<StyleBox> sb; - if (comment) { - sb = get_stylebox(selected ? "commentfocus" : "comment"); + if (comment) { + sb = get_stylebox(selected ? "commentfocus" : "comment"); - } else { + } else { - sb = get_stylebox(selected ? "selectedframe" : "frame"); - } + sb = get_stylebox(selected ? "selectedframe" : "frame"); + } - //sb=sb->duplicate(); - //sb->call("set_modulate",modulate); - Ref<Texture> port = get_icon("port"); - Ref<Texture> close = get_icon("close"); - Ref<Texture> resizer = get_icon("resizer"); - int close_offset = get_constant("close_offset"); - int close_h_offset = get_constant("close_h_offset"); - Color close_color = get_color("close_color"); - Ref<Font> title_font = get_font("title_font"); - int title_offset = get_constant("title_offset"); - int title_h_offset = get_constant("title_h_offset"); - Color title_color = get_color("title_color"); - Point2i icofs = -port->get_size() * 0.5; - int edgeofs = get_constant("port_offset"); - icofs.y += sb->get_margin(MARGIN_TOP); - - draw_style_box(sb, Rect2(Point2(), get_size())); - - switch (overlay) { - case OVERLAY_DISABLED: { - - } break; - case OVERLAY_BREAKPOINT: { - - draw_style_box(get_stylebox("breakpoint"), Rect2(Point2(), get_size())); - } break; - case OVERLAY_POSITION: { - draw_style_box(get_stylebox("position"), Rect2(Point2(), get_size())); - - } break; - } + //sb=sb->duplicate(); + //sb->call("set_modulate",modulate); + Ref<Texture> port = get_icon("port"); + Ref<Texture> close = get_icon("close"); + Ref<Texture> resizer = get_icon("resizer"); + int close_offset = get_constant("close_offset"); + int close_h_offset = get_constant("close_h_offset"); + Color close_color = get_color("close_color"); + Ref<Font> title_font = get_font("title_font"); + int title_offset = get_constant("title_offset"); + int title_h_offset = get_constant("title_h_offset"); + Color title_color = get_color("title_color"); + Point2i icofs = -port->get_size() * 0.5; + int edgeofs = get_constant("port_offset"); + icofs.y += sb->get_margin(MARGIN_TOP); + + draw_style_box(sb, Rect2(Point2(), get_size())); + + switch (overlay) { + case OVERLAY_DISABLED: { + + } break; + case OVERLAY_BREAKPOINT: { + + draw_style_box(get_stylebox("breakpoint"), Rect2(Point2(), get_size())); + } break; + case OVERLAY_POSITION: { + draw_style_box(get_stylebox("position"), Rect2(Point2(), get_size())); + + } break; + } - int w = get_size().width - sb->get_minimum_size().x; + int w = get_size().width - sb->get_minimum_size().x; - if (show_close) - w -= close->get_width(); + if (show_close) + w -= close->get_width(); - draw_string(title_font, Point2(sb->get_margin(MARGIN_LEFT) + title_h_offset, -title_font->get_height() + title_font->get_ascent() + title_offset), title, title_color, w); - if (show_close) { - Vector2 cpos = Point2(w + sb->get_margin(MARGIN_LEFT) + close_h_offset, -close->get_height() + close_offset); - draw_texture(close, cpos, close_color); - close_rect.position = cpos; - close_rect.size = close->get_size(); - } else { - close_rect = Rect2(); - } + draw_string(title_font, Point2(sb->get_margin(MARGIN_LEFT) + title_h_offset, -title_font->get_height() + title_font->get_ascent() + title_offset), title, title_color, w); + if (show_close) { + Vector2 cpos = Point2(w + sb->get_margin(MARGIN_LEFT) + close_h_offset, -close->get_height() + close_offset); + draw_texture(close, cpos, close_color); + close_rect.position = cpos; + close_rect.size = close->get_size(); + } else { + close_rect = Rect2(); + } - for (Map<int, Slot>::Element *E = slot_info.front(); E; E = E->next()) { - - if (E->key() < 0 || E->key() >= cache_y.size()) - continue; - if (!slot_info.has(E->key())) - continue; - const Slot &s = slot_info[E->key()]; - //left - if (s.enable_left) { - Ref<Texture> p = port; - if (s.custom_slot_left.is_valid()) { - p = s.custom_slot_left; + for (Map<int, Slot>::Element *E = slot_info.front(); E; E = E->next()) { + + if (E->key() < 0 || E->key() >= cache_y.size()) + continue; + if (!slot_info.has(E->key())) + continue; + const Slot &s = slot_info[E->key()]; + //left + if (s.enable_left) { + Ref<Texture> p = port; + if (s.custom_slot_left.is_valid()) { + p = s.custom_slot_left; + } + p->draw(get_canvas_item(), icofs + Point2(edgeofs, cache_y[E->key()]), s.color_left); } - p->draw(get_canvas_item(), icofs + Point2(edgeofs, cache_y[E->key()]), s.color_left); - } - if (s.enable_right) { - Ref<Texture> p = port; - if (s.custom_slot_right.is_valid()) { - p = s.custom_slot_right; + if (s.enable_right) { + Ref<Texture> p = port; + if (s.custom_slot_right.is_valid()) { + p = s.custom_slot_right; + } + p->draw(get_canvas_item(), icofs + Point2(get_size().x - edgeofs, cache_y[E->key()]), s.color_right); } - p->draw(get_canvas_item(), icofs + Point2(get_size().x - edgeofs, cache_y[E->key()]), s.color_right); } - } - if (resizable) { - draw_texture(resizer, get_size() - resizer->get_size()); - } - } + if (resizable) { + draw_texture(resizer, get_size() - resizer->get_size()); + } + } break; + + case NOTIFICATION_SORT_CHILDREN: { + + _resort(); + } break; - if (p_what == NOTIFICATION_SORT_CHILDREN) { + case NOTIFICATION_THEME_CHANGED: { - _resort(); + minimum_size_changed(); + } break; } } diff --git a/scene/gui/grid_container.cpp b/scene/gui/grid_container.cpp index b37d08de71..d0e2edc7b5 100644 --- a/scene/gui/grid_container.cpp +++ b/scene/gui/grid_container.cpp @@ -164,6 +164,10 @@ void GridContainer::_notification(int p_what) { } } break; + case NOTIFICATION_THEME_CHANGED: { + + minimum_size_changed(); + } break; } } diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index f5521cccd5..efe452305b 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -715,9 +715,9 @@ void ItemList::_gui_input(const Ref<InputEvent> &p_event) { } } else if (p_event->is_action("ui_cancel")) { search_string = ""; - } else if (p_event->is_action("ui_select")) { + } else if (p_event->is_action("ui_select") && select_mode == SELECT_MULTI) { - if (select_mode == SELECT_MULTI && current >= 0 && current < items.size()) { + if (current >= 0 && current < items.size()) { if (items[current].selectable && !items[current].disabled && !items[current].selected) { select(current, false); emit_signal("multi_selected", current, true); diff --git a/scene/gui/margin_container.cpp b/scene/gui/margin_container.cpp index a087b68d25..62ba45c484 100644 --- a/scene/gui/margin_container.cpp +++ b/scene/gui/margin_container.cpp @@ -64,27 +64,33 @@ Size2 MarginContainer::get_minimum_size() const { void MarginContainer::_notification(int p_what) { - if (p_what == NOTIFICATION_SORT_CHILDREN) { + switch (p_what) { + case NOTIFICATION_SORT_CHILDREN: { - int margin_left = get_constant("margin_left"); - int margin_top = get_constant("margin_top"); - int margin_right = get_constant("margin_right"); - int margin_bottom = get_constant("margin_bottom"); + int margin_left = get_constant("margin_left"); + int margin_top = get_constant("margin_top"); + int margin_right = get_constant("margin_right"); + int margin_bottom = get_constant("margin_bottom"); - Size2 s = get_size(); + Size2 s = get_size(); - for (int i = 0; i < get_child_count(); i++) { + for (int i = 0; i < get_child_count(); i++) { - Control *c = Object::cast_to<Control>(get_child(i)); - if (!c) - continue; - if (c->is_set_as_toplevel()) - continue; + Control *c = Object::cast_to<Control>(get_child(i)); + if (!c) + continue; + if (c->is_set_as_toplevel()) + continue; - int w = s.width - margin_left - margin_right; - int h = s.height - margin_top - margin_bottom; - fit_child_in_rect(c, Rect2(margin_left, margin_top, w, h)); - } + int w = s.width - margin_left - margin_right; + int h = s.height - margin_top - margin_bottom; + fit_child_in_rect(c, Rect2(margin_left, margin_top, w, h)); + } + } break; + case NOTIFICATION_THEME_CHANGED: { + + minimum_size_changed(); + } break; } } diff --git a/scene/gui/progress_bar.cpp b/scene/gui/progress_bar.cpp index e7564bbf73..2195ec9778 100644 --- a/scene/gui/progress_bar.cpp +++ b/scene/gui/progress_bar.cpp @@ -92,5 +92,6 @@ void ProgressBar::_bind_methods() { ProgressBar::ProgressBar() { set_v_size_flags(0); + set_step(0.01); percent_visible = true; } diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp index e4cb2a06fc..d6a93238b2 100644 --- a/scene/gui/split_container.cpp +++ b/scene/gui/split_container.cpp @@ -193,6 +193,10 @@ void SplitContainer::_notification(int p_what) { draw_texture(tex, Point2i(middle_sep + (sep - tex->get_width()) / 2, (size.y - tex->get_height()) / 2)); } } break; + case NOTIFICATION_THEME_CHANGED: { + + minimum_size_changed(); + } break; } } diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp index b4fe6b0255..212efa4976 100644 --- a/scene/gui/tab_container.cpp +++ b/scene/gui/tab_container.cpp @@ -338,6 +338,7 @@ void TabContainer::_notification(int p_what) { } } break; case NOTIFICATION_THEME_CHANGED: { + minimum_size_changed(); call_deferred("_on_theme_changed"); //wait until all changed theme } break; } diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 09fbb39866..4abde6cc0f 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -2645,24 +2645,26 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { } case KEY_UP: { - if (k->get_shift()) - _pre_shift_selection(); if (k->get_alt()) { scancode_handled = false; break; } #ifndef APPLE_STYLE_KEYS if (k->get_command()) { - _scroll_lines_up(); - break; - } #else if (k->get_command() && k->get_alt()) { +#endif _scroll_lines_up(); break; } + if (k->get_shift()) { + _pre_shift_selection(); + } + +#ifdef APPLE_STYLE_KEYS if (k->get_command()) { + cursor_set_line(0); } else #endif @@ -2696,24 +2698,24 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { } case KEY_DOWN: { - if (k->get_shift()) - _pre_shift_selection(); if (k->get_alt()) { scancode_handled = false; break; } #ifndef APPLE_STYLE_KEYS if (k->get_command()) { - _scroll_lines_down(); - break; - } - #else if (k->get_command() && k->get_alt()) { +#endif _scroll_lines_down(); break; } + if (k->get_shift()) { + _pre_shift_selection(); + } + +#ifdef APPLE_STYLE_KEYS if (k->get_command()) { cursor_set_line(get_last_unhidden_line(), true, false, 9999); } else diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 6aa3891035..04d7107fa4 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -1311,7 +1311,7 @@ Node *Node::_get_child_by_name(const StringName &p_name) const { return NULL; } -Node *Node::_get_node(const NodePath &p_path) const { +Node *Node::get_node_or_null(const NodePath &p_path) const { if (!data.inside_tree && p_path.is_absolute()) { ERR_EXPLAIN("Can't use get_node() with absolute paths from outside the active scene tree."); @@ -1376,7 +1376,7 @@ Node *Node::_get_node(const NodePath &p_path) const { Node *Node::get_node(const NodePath &p_path) const { - Node *node = _get_node(p_path); + Node *node = get_node_or_null(p_path); if (!node) { ERR_EXPLAIN("Node not found: " + p_path); ERR_FAIL_COND_V(!node, NULL); @@ -1386,7 +1386,7 @@ Node *Node::get_node(const NodePath &p_path) const { bool Node::has_node(const NodePath &p_path) const { - return _get_node(p_path) != NULL; + return get_node_or_null(p_path) != NULL; } Node *Node::find_node(const String &p_mask, bool p_recursive, bool p_owned) const { @@ -2709,6 +2709,7 @@ void Node::_bind_methods() { ClassDB::bind_method(D_METHOD("get_child", "idx"), &Node::get_child); ClassDB::bind_method(D_METHOD("has_node", "path"), &Node::has_node); ClassDB::bind_method(D_METHOD("get_node", "path"), &Node::get_node); + ClassDB::bind_method(D_METHOD("get_node_or_null", "path"), &Node::get_node_or_null); ClassDB::bind_method(D_METHOD("get_parent"), &Node::get_parent); ClassDB::bind_method(D_METHOD("find_node", "mask", "recursive", "owned"), &Node::find_node, DEFVAL(true), DEFVAL(true)); ClassDB::bind_method(D_METHOD("find_parent", "mask"), &Node::find_parent); diff --git a/scene/main/node.h b/scene/main/node.h index 1c451ef567..e6189389cb 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -153,7 +153,6 @@ private: void _print_tree_pretty(const String prefix, const bool last); void _print_tree(const Node *p_node); - Node *_get_node(const NodePath &p_path) const; Node *_get_child_by_name(const StringName &p_name) const; void _replace_connections_target(Node *p_new_target); @@ -252,6 +251,7 @@ public: Node *get_child(int p_index) const; bool has_node(const NodePath &p_path) const; Node *get_node(const NodePath &p_path) const; + Node *get_node_or_null(const NodePath &p_path) const; Node *find_node(const String &p_mask, bool p_recursive = true, bool p_owned = true) const; bool has_node_and_resource(const NodePath &p_path) const; Node *get_node_and_resource(const NodePath &p_path, RES &r_res, Vector<StringName> &r_leftover_subpath, bool p_last_is_property = true) const; diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index 5acb157279..689f18a09d 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -484,6 +484,14 @@ bool SceneTree::iteration(float p_time) { return _quit; } +void SceneTree::_update_font_oversampling(float p_ratio) { + + if (use_font_oversampling) { + DynamicFontAtSize::font_oversampling = p_ratio; + DynamicFont::update_oversampling(); + } +} + bool SceneTree::idle(float p_time) { //print_line("ram: "+itos(OS::get_singleton()->get_static_memory_usage())+" sram: "+itos(OS::get_singleton()->get_dynamic_memory_usage())); @@ -515,12 +523,6 @@ bool SceneTree::idle(float p_time) { last_screen_size = win_size; _update_root_rect(); - - if (use_font_oversampling) { - DynamicFontAtSize::font_oversampling = OS::get_singleton()->get_window_size().width / root->get_visible_rect().size.width; - DynamicFont::update_oversampling(); - } - emit_signal("screen_resized"); } @@ -1133,10 +1135,12 @@ void SceneTree::_update_root_rect() { if (stretch_mode == STRETCH_MODE_DISABLED) { + _update_font_oversampling(1.0); root->set_size((last_screen_size / stretch_shrink).floor()); root->set_attach_to_screen_rect(Rect2(Point2(), last_screen_size)); root->set_size_override_stretch(false); root->set_size_override(false, Size2()); + root->update_canvas_items(); return; //user will take care } @@ -1150,6 +1154,10 @@ void SceneTree::_update_root_rect() { float viewport_aspect = desired_res.aspect(); float video_mode_aspect = video_mode.aspect(); + if (use_font_oversampling && stretch_aspect == STRETCH_ASPECT_IGNORE) { + WARN_PRINT("Font oversampling only works with the resize modes 'Keep Width', 'Keep Height', and 'Expand'."); + } + if (stretch_aspect == STRETCH_ASPECT_IGNORE || ABS(viewport_aspect - video_mode_aspect) < CMP_EPSILON) { //same aspect or ignore aspect viewport_size = desired_res; @@ -1208,21 +1216,30 @@ void SceneTree::_update_root_rect() { switch (stretch_mode) { case STRETCH_MODE_DISABLED: { // Already handled above + _update_font_oversampling(1.0); } break; case STRETCH_MODE_2D: { + _update_font_oversampling(screen_size.x / viewport_size.x); //screen / viewport radio drives oversampling root->set_size((screen_size / stretch_shrink).floor()); root->set_attach_to_screen_rect(Rect2(margin, screen_size)); root->set_size_override_stretch(true); root->set_size_override(true, (viewport_size / stretch_shrink).floor()); + root->update_canvas_items(); //force them to update just in case } break; case STRETCH_MODE_VIEWPORT: { + _update_font_oversampling(1.0); root->set_size((viewport_size / stretch_shrink).floor()); root->set_attach_to_screen_rect(Rect2(margin, screen_size)); root->set_size_override_stretch(false); root->set_size_override(false, Size2()); + root->update_canvas_items(); //force them to update just in case + + if (use_font_oversampling) { + WARN_PRINT("Font oversampling does not work in 'Viewport' stretch mode, only '2D'.") + } } break; } @@ -1925,12 +1942,11 @@ void SceneTree::add_idle_callback(IdleCallback p_callback) { void SceneTree::set_use_font_oversampling(bool p_oversampling) { + if (use_font_oversampling == p_oversampling) + return; + use_font_oversampling = p_oversampling; - if (use_font_oversampling) { - DynamicFontAtSize::font_oversampling = OS::get_singleton()->get_window_size().width / root->get_visible_rect().size.width; - } else { - DynamicFontAtSize::font_oversampling = 1.0; - } + _update_root_rect(); } bool SceneTree::is_using_font_oversampling() const { @@ -1944,6 +1960,7 @@ SceneTree::SceneTree() { accept_quit = true; quit_on_go_back = true; initialized = false; + use_font_oversampling = false; #ifdef DEBUG_ENABLED debug_collisions_hint = false; debug_navigation_hint = false; @@ -2079,8 +2096,6 @@ SceneTree::SceneTree() { live_edit_root = NodePath("/root"); #endif - - use_font_oversampling = false; } SceneTree::~SceneTree() { diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h index d6ab8c37b2..3a1ff5cb06 100644 --- a/scene/main/scene_tree.h +++ b/scene/main/scene_tree.h @@ -153,6 +153,7 @@ private: Size2i stretch_min; real_t stretch_shrink; + void _update_font_oversampling(float p_ratio); void _update_root_rect(); List<ObjectID> delete_queue; diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 8df007dcc7..61d6fc7401 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -693,6 +693,13 @@ bool Viewport::use_arvr() { return arvr; } +void Viewport::update_canvas_items() { + if (!is_inside_tree()) + return; + + _update_canvas_items(this); +} + void Viewport::set_size(const Size2 &p_size) { if (size == p_size.floor()) @@ -1128,6 +1135,26 @@ Transform2D Viewport::get_final_transform() const { return stretch_transform * global_canvas_transform; } +void Viewport::_update_canvas_items(Node *p_node) { + if (p_node != this) { + + Viewport *vp = Object::cast_to<Viewport>(p_node); + if (vp) + return; + + CanvasItem *ci = Object::cast_to<CanvasItem>(p_node); + if (ci) { + ci->update(); + } + } + + int cc = p_node->get_child_count(); + + for (int i = 0; i < cc; i++) { + _update_canvas_items(p_node->get_child(i)); + } +} + void Viewport::set_size_override(bool p_enable, const Size2 &p_size, const Vector2 &p_margin) { if (size_override == p_enable && p_size == size_override_size) diff --git a/scene/main/viewport.h b/scene/main/viewport.h index cdb9d4afb5..4d0a4e8c87 100644 --- a/scene/main/viewport.h +++ b/scene/main/viewport.h @@ -385,6 +385,8 @@ private: void _drop_mouse_focus(); + void _update_canvas_items(Node *p_node); + protected: void _notification(int p_what); static void _bind_methods(); @@ -403,6 +405,7 @@ public: bool is_audio_listener_2d() const; void set_size(const Size2 &p_size); + void update_canvas_items(); Size2 get_size() const; Rect2 get_visible_rect() const; diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index a50a09f095..078d880d0e 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -145,6 +145,7 @@ #include "scene/resources/mesh_library.h" #include "scene/resources/packed_scene.h" #include "scene/resources/particles_material.h" +#include "scene/resources/physics_material.h" #include "scene/resources/plane_shape.h" #include "scene/resources/polygon_path_finder.h" #include "scene/resources/primitive_meshes.h" @@ -207,7 +208,6 @@ #include "scene/3d/visibility_notifier.h" #include "scene/animation/skeleton_ik.h" #include "scene/resources/environment.h" -#include "scene/resources/physics_material.h" #endif static Ref<ResourceFormatSaverText> resource_saver_text; @@ -602,8 +602,8 @@ void register_scene_types() { ClassDB::register_class<SpatialVelocityTracker>(); - ClassDB::register_class<PhysicsMaterial>(); #endif + ClassDB::register_class<PhysicsMaterial>(); ClassDB::register_class<World>(); ClassDB::register_class<Environment>(); ClassDB::register_class<World2D>(); diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp index 5660f0a1b9..fd7b67a218 100644 --- a/scene/resources/dynamic_font.cpp +++ b/scene/resources/dynamic_font.cpp @@ -1009,7 +1009,7 @@ void DynamicFont::_bind_methods() { ADD_GROUP("Settings", ""); ADD_PROPERTY(PropertyInfo(Variant::INT, "size"), "set_size", "get_size"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "outline_size"), "set_outline_size", "get_outline_size"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "outline_size", PROPERTY_HINT_RANGE, "0,255,1"), "set_outline_size", "get_outline_size"); ADD_PROPERTY(PropertyInfo(Variant::COLOR, "outline_color"), "set_outline_color", "get_outline_color"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_mipmaps"), "set_use_mipmaps", "get_use_mipmaps"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_filter"), "set_use_filter", "get_use_filter"); diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp index a57b7bbb42..3c295267dc 100644 --- a/scene/resources/environment.cpp +++ b/scene/resources/environment.cpp @@ -303,7 +303,7 @@ Ref<Texture> Environment::get_adjustment_color_correction() const { void Environment::_validate_property(PropertyInfo &property) const { - if (property.name == "background_sky" || property.name == "background_sky_custom_fov" || property.name == "background_sky_orientation" || property.name == "ambient_light/sky_contribution") { + if (property.name == "background_sky" || property.name == "background_sky_custom_fov" || property.name == "background_sky_orientation" || property.name == "background_sky_rotation" || property.name == "background_sky_rotation_degrees" || property.name == "ambient_light/sky_contribution") { if (bg_mode != BG_SKY && bg_mode != BG_COLOR_SKY) { property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL; } diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp index 7ecf9a2b16..c72ccc97db 100644 --- a/scene/resources/font.cpp +++ b/scene/resources/font.cpp @@ -497,6 +497,7 @@ Size2 Font::get_string_size(const String &p_string) const { } void BitmapFont::set_fallback(const Ref<BitmapFont> &p_fallback) { + ERR_FAIL_COND(p_fallback == this); fallback = p_fallback; } diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp index ea810edf8c..f28a67b493 100644 --- a/scene/resources/packed_scene.cpp +++ b/scene/resources/packed_scene.cpp @@ -55,7 +55,7 @@ Node *SceneState::instance(GenEditState p_edit_state) const { Node *p_name; \ if (p_id & FLAG_ID_IS_PATH) { \ NodePath np = node_paths[p_id & FLAG_MASK]; \ - p_name = ret_nodes[0]->_get_node(np); \ + p_name = ret_nodes[0]->get_node_or_null(np); \ } else { \ ERR_FAIL_INDEX_V(p_id &FLAG_MASK, nc, NULL); \ p_name = ret_nodes[p_id & FLAG_MASK]; \ @@ -342,7 +342,7 @@ Node *SceneState::instance(GenEditState p_edit_state) const { } for (int i = 0; i < editable_instances.size(); i++) { - Node *ei = ret_nodes[0]->_get_node(editable_instances[i]); + Node *ei = ret_nodes[0]->get_node_or_null(editable_instances[i]); if (ei) { ret_nodes[0]->set_editable_instance(ei, true); } diff --git a/scene/resources/scene_format_text.cpp b/scene/resources/scene_format_text.cpp index 558810d92a..d00a7c2918 100644 --- a/scene/resources/scene_format_text.cpp +++ b/scene/resources/scene_format_text.cpp @@ -1562,7 +1562,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path, const RES &p_r break; //save as a scene if (main) { - f->store_line("[resource]\n"); + f->store_line("[resource]"); } else { String line = "[sub_resource "; if (res->get_subindex() == 0) { @@ -1577,7 +1577,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path, const RES &p_r int idx = res->get_subindex(); line += "type=\"" + res->get_class() + "\" id=" + itos(idx); - f->store_line(line + "]\n"); + f->store_line(line + "]"); if (takeover_paths) { res->set_path(p_path + "::" + itos(idx), true); } diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp index db7153e9ad..affe9a3e24 100644 --- a/scene/resources/style_box.cpp +++ b/scene/resources/style_box.cpp @@ -29,6 +29,8 @@ /*************************************************************************/ #include "style_box.h" +#include "scene/2d/canvas_item.h" + #include <limits.h> bool StyleBox::test_mask(const Point2 &p_point, const Rect2 &p_rect) const { @@ -54,6 +56,10 @@ float StyleBox::get_margin(Margin p_margin) const { return margin[p_margin]; } +CanvasItem *StyleBox::get_current_item_drawn() const { + return CanvasItem::get_current_item_drawn(); +} + Size2 StyleBox::get_minimum_size() const { return Size2(get_margin(MARGIN_LEFT) + get_margin(MARGIN_RIGHT), get_margin(MARGIN_TOP) + get_margin(MARGIN_BOTTOM)); @@ -83,6 +89,7 @@ void StyleBox::_bind_methods() { ClassDB::bind_method(D_METHOD("get_minimum_size"), &StyleBox::get_minimum_size); ClassDB::bind_method(D_METHOD("get_center_size"), &StyleBox::get_center_size); ClassDB::bind_method(D_METHOD("get_offset"), &StyleBox::get_offset); + ClassDB::bind_method(D_METHOD("get_current_item_drawn"), &StyleBox::get_current_item_drawn); ClassDB::bind_method(D_METHOD("draw", "canvas_item", "rect"), &StyleBox::draw); diff --git a/scene/resources/style_box.h b/scene/resources/style_box.h index 911a457990..9062270765 100644 --- a/scene/resources/style_box.h +++ b/scene/resources/style_box.h @@ -37,6 +37,8 @@ /** @author Juan Linietsky <reduzio@gmail.com> */ +class CanvasItem; + class StyleBox : public Resource { GDCLASS(StyleBox, Resource); @@ -58,6 +60,8 @@ public: virtual void draw(RID p_canvas_item, const Rect2 &p_rect) const = 0; + CanvasItem *get_current_item_drawn() const; + Size2 get_minimum_size() const; Point2 get_offset() const; diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp index 1684cbf15f..2116dd0b1e 100644 --- a/scene/resources/surface_tool.cpp +++ b/scene/resources/surface_tool.cpp @@ -1021,8 +1021,6 @@ void SurfaceTool::_bind_methods() { ClassDB::bind_method(D_METHOD("generate_normals", "flip"), &SurfaceTool::generate_normals, DEFVAL(false)); ClassDB::bind_method(D_METHOD("generate_tangents"), &SurfaceTool::generate_tangents); - ClassDB::bind_method(D_METHOD("add_to_format", "flags"), &SurfaceTool::add_to_format); - ClassDB::bind_method(D_METHOD("set_material", "material"), &SurfaceTool::set_material); ClassDB::bind_method(D_METHOD("clear"), &SurfaceTool::clear); diff --git a/scene/resources/surface_tool.h b/scene/resources/surface_tool.h index 754254150d..ef13238c13 100644 --- a/scene/resources/surface_tool.h +++ b/scene/resources/surface_tool.h @@ -118,8 +118,6 @@ public: void generate_normals(bool p_flip = false); void generate_tangents(); - void add_to_format(int p_flags) { format |= p_flags; } - void set_material(const Ref<Material> &p_material); void clear(); diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp index 4984af57b5..ff5900cd3e 100644 --- a/scene/resources/texture.cpp +++ b/scene/resources/texture.cpp @@ -178,6 +178,12 @@ void ImageTexture::_reload_hook(const RID &p_hook) { _change_notify(); } +bool ImageTexture::keep_images_cached = false; + +void ImageTexture::set_keep_images_cached(bool p_enable) { + keep_images_cached = p_enable; +} + void ImageTexture::create(int p_width, int p_height, Image::Format p_format, uint32_t p_flags) { flags = p_flags; @@ -185,6 +191,7 @@ void ImageTexture::create(int p_width, int p_height, Image::Format p_format, uin format = p_format; w = p_width; h = p_height; + _change_notify(); } void ImageTexture::create_from_image(const Ref<Image> &p_image, uint32_t p_flags) { @@ -197,6 +204,10 @@ void ImageTexture::create_from_image(const Ref<Image> &p_image, uint32_t p_flags VisualServer::get_singleton()->texture_allocate(texture, p_image->get_width(), p_image->get_height(), 0, p_image->get_format(), VS::TEXTURE_TYPE_2D, p_flags); VisualServer::get_singleton()->texture_set_data(texture, p_image); _change_notify(); + + if (keep_images_cached) { + image_cache = p_image; + } } void ImageTexture::set_flags(uint32_t p_flags) { @@ -211,6 +222,7 @@ void ImageTexture::set_flags(uint32_t p_flags) { return; //uninitialized, do not set to texture } VisualServer::get_singleton()->texture_set_flags(texture, p_flags); + _change_notify("flags"); } uint32_t ImageTexture::get_flags() const { @@ -243,6 +255,10 @@ void ImageTexture::set_data(const Ref<Image> &p_image) { _change_notify(); alpha_cache.unref(); + + if (keep_images_cached) { + image_cache = p_image; + } } void ImageTexture::_resource_path_changed() { @@ -252,7 +268,11 @@ void ImageTexture::_resource_path_changed() { Ref<Image> ImageTexture::get_data() const { - return VisualServer::get_singleton()->texture_get_data(texture); + if (image_cache.is_valid()) { + return image_cache; + } else { + return VisualServer::get_singleton()->texture_get_data(texture); + } } int ImageTexture::get_width() const { @@ -712,6 +732,7 @@ Error StreamTexture::load(const String &p_path) { path_to_file = p_path; format = image->get_format(); + _change_notify(); return OK; } String StreamTexture::get_load_path() const { @@ -801,6 +822,7 @@ bool StreamTexture::is_pixel_opaque(int p_x, int p_y) const { void StreamTexture::set_flags(uint32_t p_flags) { flags = p_flags; VS::get_singleton()->texture_set_flags(texture, flags); + _change_notify("flags"); } void StreamTexture::reload_from_file() { @@ -921,6 +943,7 @@ uint32_t AtlasTexture::get_flags() const { void AtlasTexture::set_atlas(const Ref<Texture> &p_atlas) { + ERR_FAIL_COND(p_atlas == this); if (atlas == p_atlas) return; atlas = p_atlas; @@ -1160,6 +1183,7 @@ void LargeTexture::set_piece_offset(int p_idx, const Point2 &p_offset) { void LargeTexture::set_piece_texture(int p_idx, const Ref<Texture> &p_texture) { + ERR_FAIL_COND(p_texture == this); ERR_FAIL_INDEX(p_idx, pieces.size()); pieces.write[p_idx].texture = p_texture; }; @@ -1725,6 +1749,7 @@ void ProxyTexture::_bind_methods() { void ProxyTexture::set_base(const Ref<Texture> &p_texture) { + ERR_FAIL_COND(p_texture == this); base = p_texture; if (base.is_valid()) { VS::get_singleton()->texture_set_proxy(proxy, base->get_rid()); @@ -1840,6 +1865,8 @@ int AnimatedTexture::get_frames() const { } void AnimatedTexture::set_frame_texture(int p_frame, const Ref<Texture> &p_texture) { + + ERR_FAIL_COND(p_texture == this); ERR_FAIL_INDEX(p_frame, MAX_FRAMES); RWLockWrite w(rw_lock); @@ -1978,6 +2005,8 @@ void AnimatedTexture::_bind_methods() { ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "frame_" + itos(i) + "/texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_frame_texture", "get_frame_texture", i); ADD_PROPERTYI(PropertyInfo(Variant::REAL, "frame_" + itos(i) + "/delay_sec", PROPERTY_HINT_RANGE, "0.0,16.0,0.01", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_INTERNAL), "set_frame_delay", "get_frame_delay", i); } + + BIND_CONSTANT(MAX_FRAMES); } AnimatedTexture::AnimatedTexture() { diff --git a/scene/resources/texture.h b/scene/resources/texture.h index 2b67ebec62..4b5b504510 100644 --- a/scene/resources/texture.h +++ b/scene/resources/texture.h @@ -111,6 +111,7 @@ private: Size2 size_override; float lossy_storage_quality; mutable Ref<BitMap> alpha_cache; + Ref<Image> image_cache; protected: virtual void reload_from_file(); @@ -125,7 +126,11 @@ protected: void _set_data(Dictionary p_data); + static bool keep_images_cached; + public: + static void set_keep_images_cached(bool p_enable); + void create(int p_width, int p_height, Image::Format p_format, uint32_t p_flags = FLAGS_DEFAULT); void create_from_image(const Ref<Image> &p_image, uint32_t p_flags = FLAGS_DEFAULT); diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp index 786a136040..8d1a24dbf8 100644 --- a/scene/resources/theme.cpp +++ b/scene/resources/theme.cpp @@ -622,43 +622,47 @@ void Theme::clear() { void Theme::copy_default_theme() { Ref<Theme> default_theme = get_default(); + copy_theme(default_theme); +} + +void Theme::copy_theme(const Ref<Theme> &p_other) { //these need reconnecting, so add normally { const StringName *K = NULL; - while ((K = default_theme->icon_map.next(K))) { + while ((K = p_other->icon_map.next(K))) { const StringName *L = NULL; - while ((L = default_theme->icon_map[*K].next(L))) { - set_icon(*K, *L, default_theme->icon_map[*K][*L]); + while ((L = p_other->icon_map[*K].next(L))) { + set_icon(*L, *K, p_other->icon_map[*K][*L]); } } } { const StringName *K = NULL; - while ((K = default_theme->style_map.next(K))) { + while ((K = p_other->style_map.next(K))) { const StringName *L = NULL; - while ((L = default_theme->style_map[*K].next(L))) { - set_stylebox(*K, *L, default_theme->style_map[*K][*L]); + while ((L = p_other->style_map[*K].next(L))) { + set_stylebox(*L, *K, p_other->style_map[*K][*L]); } } } { const StringName *K = NULL; - while ((K = default_theme->font_map.next(K))) { + while ((K = p_other->font_map.next(K))) { const StringName *L = NULL; - while ((L = default_theme->font_map[*K].next(L))) { - set_font(*K, *L, default_theme->font_map[*K][*L]); + while ((L = p_other->font_map[*K].next(L))) { + set_font(*L, *K, p_other->font_map[*K][*L]); } } } //these are ok to just copy - color_map = default_theme->color_map; - constant_map = default_theme->constant_map; - shader_map = default_theme->shader_map; + color_map = p_other->color_map; + constant_map = p_other->constant_map; + shader_map = p_other->shader_map; _change_notify(); emit_changed(); @@ -752,6 +756,7 @@ void Theme::_bind_methods() { ClassDB::bind_method(D_METHOD("_emit_theme_changed"), &Theme::_emit_theme_changed); ClassDB::bind_method("copy_default_theme", &Theme::copy_default_theme); + ClassDB::bind_method(D_METHOD("copy_theme", "other"), &Theme::copy_theme); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "default_font", PROPERTY_HINT_RESOURCE_TYPE, "Font"), "set_default_font", "get_default_font"); } diff --git a/scene/resources/theme.h b/scene/resources/theme.h index 021a2936bd..fb59073cbe 100644 --- a/scene/resources/theme.h +++ b/scene/resources/theme.h @@ -184,6 +184,7 @@ public: void get_type_list(List<StringName> *p_list) const; void copy_default_theme(); + void copy_theme(const Ref<Theme> &p_other); void clear(); Theme(); diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp index 38a5f9714e..3c83de91fd 100644 --- a/scene/resources/tile_set.cpp +++ b/scene/resources/tile_set.cpp @@ -614,7 +614,7 @@ Vector2 TileSet::autotile_get_subtile_for_bitmask(int p_id, uint16_t p_bitmask, if (coords.size() == 0) { return autotile_get_icon_coordinate(p_id); } else { - return coords[Math::random(0, (int)coords.size())]; + return coords[Math::rand() % coords.size()]; } } @@ -908,7 +908,7 @@ void TileSet::_tile_set_shapes(int p_id, const Array &p_shapes) { if (d.has("one_way_margin") && d["one_way_margin"].is_num()) s.one_way_collision_margin = d["one_way_margin"]; else - s.one_way_collision = 1.0; + s.one_way_collision_margin = 1.0; if (d.has("autotile_coord") && d["autotile_coord"].get_type() == Variant::VECTOR2) s.autotile_coord = d["autotile_coord"]; diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index c4be86281c..d96b37938f 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -834,15 +834,15 @@ Error VisualShader::_write_node(Type type, StringBuilder &global_code, StringBui } Ref<VisualShaderNodeInput> input = vsnode; + bool skip_global = input.is_valid() && for_preview; - if (input.is_valid() && for_preview) { - //handle for preview - code += input->generate_code_for_preview(type, node, inputs, outputs); - } else { - //handle normally + if (!skip_global) { global_code += vsnode->generate_global(get_mode(), type, node); - code += vsnode->generate_code(get_mode(), type, node, inputs, outputs); } + + //handle normally + code += vsnode->generate_code(get_mode(), type, node, inputs, outputs, for_preview); + code += "\n"; // processed.insert(node); @@ -1046,32 +1046,40 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = { { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "point_size", "POINT_SIZE" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "modelview", "MODELVIEW_MATRIX" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "camera", "CAMERA_MATRIX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_camera", "INV_CAMERA_MATRIX" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION_MATRIX" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_projection", "INV_PROJECTION_MATRIX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(VIEWPORT_SIZE, 0)" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(VIEWPORT_SIZE, 0)" }, // Spatial, Fragment + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "VERTEX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "tangent", "TANGENT" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "binormal", "BINORMAL" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "view", "VIEW" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv2", "vec3(UV2,0.0)" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec2(POINT_COORD,0.0)" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec3(POINT_COORD,0.0)" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "side", "float(FRONT_FACING ? 1.0 : 0.0)" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_camera", "INV_CAMERA_MATRIX" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "camera", "CAMERA_MATRIX" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION_MATRIX" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_projection", "INV_PROJECTION_MATRIX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(VIEWPORT_SIZE, 0.0)" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(VIEWPORT_SIZE, 0.0)" }, // Spatial, Light + { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "view", "VIEW" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light", "LIGHT" }, @@ -1083,15 +1091,18 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = { { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_camera", "INV_CAMERA_MATRIX" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "camera", "CAMERA_MATRIX" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION_MATRIX" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_projection", "INV_PROJECTION_MATRIX" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(VIEWPORT_SIZE, 0.0)" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(VIEWPORT_SIZE, 0.0)" }, // Canvas Item, Vertex { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "vec3(VERTEX,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "point_size", "POINT_SIZE" }, + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "texture_pixel_size", "vec3(TEXTURE_PIXEL_SIZE, 1.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION_MATRIX" }, @@ -1099,14 +1110,18 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = { { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "light_pass", "float(AT_LIGHT_PASS ? 1.0 : 0.0)" }, // Canvas Item, Fragment + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" }, - { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec2(POINT_COORD,0.0)" }, + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "texture_pixel_size", "vec3(TEXTURE_PIXEL_SIZE, 1.0)" }, + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_pixel_size", "vec3(SCREEN_PIXEL_SIZE, 1.0)" }, + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec3(POINT_COORD,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "light_pass", "float(AT_LIGHT_PASS ? 1.0 : 0.0)" }, // Canvas Item, Light + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" }, @@ -1117,10 +1132,11 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = { { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light_alpha", "LIGHT_COLOR.a" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light_uv", "vec3(LIGHT_UV,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "shadow_color", "SHADOW_COLOR.rgb" }, - { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" }, - { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec2(POINT_COORD,0.0)" }, + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "texture_pixel_size", "vec3(TEXTURE_PIXEL_SIZE, 1.0)" }, + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec3(POINT_COORD,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, + // Particles, Vertex { Shader::MODE_PARTICLES, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" }, { Shader::MODE_PARTICLES, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" }, @@ -1151,16 +1167,16 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::preview_ports[] = { { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(UV,0.0)" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "side", "1.0" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(1.0,1.0, 0.0)" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(1.0,1.0, 0.0)" }, // Spatial, Light { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "vec3(0.0,0.0,1.0)" }, { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, - { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "vp_size", "vec3(1.0, 1.0, 0.0)" }, + { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(1.0, 1.0, 0.0)" }, // Canvas Item, Vertex { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "vec3(VERTEX,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" }, @@ -1171,7 +1187,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::preview_ports[] = { { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" }, - { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(UV,0.0)" }, + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, // Canvas Item, Light { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV,0.0)" }, @@ -1179,7 +1195,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::preview_ports[] = { { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "1.0" }, - { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(UV,0.0)" }, + { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV,0.0)" }, { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" }, // Particles, Vertex { Shader::MODE_PARTICLES, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "vec3(1.0)" }, @@ -1218,56 +1234,56 @@ String VisualShaderNodeInput::get_caption() const { return TTR("Input"); } -String VisualShaderNodeInput::generate_code_for_preview(VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeInput::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { - int idx = 0; + if (p_for_preview) { + int idx = 0; - String code; + String code; - while (preview_ports[idx].mode != Shader::MODE_MAX) { - if (preview_ports[idx].mode == shader_mode && preview_ports[idx].shader_type == shader_type && preview_ports[idx].name == input_name) { - code = "\t" + p_output_vars[0] + " = " + preview_ports[idx].string + ";\n"; - break; + while (preview_ports[idx].mode != Shader::MODE_MAX) { + if (preview_ports[idx].mode == shader_mode && preview_ports[idx].shader_type == shader_type && preview_ports[idx].name == input_name) { + code = "\t" + p_output_vars[0] + " = " + preview_ports[idx].string + ";\n"; + break; + } + idx++; } - idx++; - } - if (code == String()) { - switch (get_output_port_type(0)) { - case PORT_TYPE_SCALAR: { - code = "\t" + p_output_vars[0] + " = 0.0;\n"; - } break; //default (none found) is scalar - case PORT_TYPE_VECTOR: { - code = "\t" + p_output_vars[0] + " = vec3(0.0);\n"; - } break; //default (none found) is scalar - case PORT_TYPE_TRANSFORM: { - code = "\t" + p_output_vars[0] + " = mat4( vec4(1.0,0.0,0.0,0.0), vec4(0.0,1.0,0.0,0.0), vec4(0.0,0.0,1.0,0.0), vec4(0.0,0.0,0.0,1.0) );\n"; - } break; //default (none found) is scalar + if (code == String()) { + switch (get_output_port_type(0)) { + case PORT_TYPE_SCALAR: { + code = "\t" + p_output_vars[0] + " = 0.0;\n"; + } break; //default (none found) is scalar + case PORT_TYPE_VECTOR: { + code = "\t" + p_output_vars[0] + " = vec3(0.0);\n"; + } break; //default (none found) is scalar + case PORT_TYPE_TRANSFORM: { + code = "\t" + p_output_vars[0] + " = mat4( vec4(1.0,0.0,0.0,0.0), vec4(0.0,1.0,0.0,0.0), vec4(0.0,0.0,1.0,0.0), vec4(0.0,0.0,0.0,1.0) );\n"; + } break; //default (none found) is scalar + } } - } - return code; -} + return code; -String VisualShaderNodeInput::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { + } else { + int idx = 0; - int idx = 0; + String code; - String code; + while (ports[idx].mode != Shader::MODE_MAX) { + if (ports[idx].mode == shader_mode && ports[idx].shader_type == shader_type && ports[idx].name == input_name) { + code = "\t" + p_output_vars[0] + " = " + ports[idx].string + ";\n"; + break; + } + idx++; + } - while (ports[idx].mode != Shader::MODE_MAX) { - if (ports[idx].mode == shader_mode && ports[idx].shader_type == shader_type && ports[idx].name == input_name) { - code = "\t" + p_output_vars[0] + " = " + ports[idx].string + ";\n"; - break; + if (code == String()) { + code = "\t" + p_output_vars[0] + " = 0.0;\n"; //default (none found) is scalar } - idx++; - } - if (code == String()) { - code = "\t" + p_output_vars[0] + " = 0.0;\n"; //default (none found) is scalar + return code; } - - return code; } void VisualShaderNodeInput::set_input_name(String p_name) { @@ -1535,7 +1551,7 @@ String VisualShaderNodeOutput::get_caption() const { return TTR("Output"); } -String VisualShaderNodeOutput::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeOutput::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { int idx = 0; int count = 0; diff --git a/scene/resources/visual_shader.h b/scene/resources/visual_shader.h index 34b55110d4..4792038351 100644 --- a/scene/resources/visual_shader.h +++ b/scene/resources/visual_shader.h @@ -200,7 +200,7 @@ public: virtual Vector<VisualShader::DefaultTextureParam> get_default_texture_parameters(VisualShader::Type p_type, int p_id) const; virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const = 0; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const = 0; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty virtual String get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const; @@ -243,8 +243,7 @@ public: virtual String get_caption() const; - virtual String generate_code_for_preview(VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; void set_input_name(String p_name); String get_input_name() const; @@ -293,7 +292,7 @@ public: virtual String get_caption() const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; VisualShaderNodeOutput(); }; diff --git a/scene/resources/visual_shader_nodes.cpp b/scene/resources/visual_shader_nodes.cpp index 427f4f51a7..d95e0e2da1 100644 --- a/scene/resources/visual_shader_nodes.cpp +++ b/scene/resources/visual_shader_nodes.cpp @@ -55,7 +55,7 @@ String VisualShaderNodeScalarConstant::get_output_port_name(int p_port) const { return ""; //no output port means the editor will be used as port } -String VisualShaderNodeScalarConstant::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeScalarConstant::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = " + vformat("%.6f", constant) + ";\n"; } @@ -114,7 +114,7 @@ String VisualShaderNodeColorConstant::get_output_port_name(int p_port) const { return p_port == 0 ? "" : "alpha"; //no output port means the editor will be used as port } -String VisualShaderNodeColorConstant::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeColorConstant::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { String code; code += "\t" + p_output_vars[0] + " = " + vformat("vec3(%.6f,%.6f,%.6f)", constant.r, constant.g, constant.b) + ";\n"; @@ -178,7 +178,7 @@ String VisualShaderNodeVec3Constant::get_output_port_name(int p_port) const { return ""; //no output port means the editor will be used as port } -String VisualShaderNodeVec3Constant::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeVec3Constant::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = " + vformat("vec3(%.6f,%.6f,%.6f)", constant.x, constant.y, constant.z) + ";\n"; } @@ -236,7 +236,7 @@ String VisualShaderNodeTransformConstant::get_output_port_name(int p_port) const return ""; //no output port means the editor will be used as port } -String VisualShaderNodeTransformConstant::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeTransformConstant::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { Transform t = constant; t.basis.transpose(); @@ -324,7 +324,7 @@ String VisualShaderNodeTexture::generate_global(Shader::Mode p_mode, VisualShade String u = "uniform sampler2D " + make_unique_id(p_type, p_id, "tex"); switch (texture_type) { case TYPE_DATA: break; - case TYPE_COLOR: u += " : hint_color"; break; + case TYPE_COLOR: u += " : hint_albedo"; break; case TYPE_NORMALMAP: u += " : hint_normal"; break; } return u + ";"; @@ -333,7 +333,7 @@ String VisualShaderNodeTexture::generate_global(Shader::Mode p_mode, VisualShade return String(); } -String VisualShaderNodeTexture::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeTexture::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { if (source == SOURCE_TEXTURE) { String id = make_unique_id(p_type, p_id, "tex"); @@ -357,7 +357,7 @@ String VisualShaderNodeTexture::generate_code(Shader::Mode p_mode, VisualShader: if (source == SOURCE_SCREEN && (p_mode == Shader::MODE_SPATIAL || p_mode == Shader::MODE_CANVAS_ITEM) && p_type == VisualShader::TYPE_FRAGMENT) { String code = "\t{\n"; - if (p_input_vars[0] == String()) { //none bound, do nothing + if (p_input_vars[0] == String() || p_for_preview) { //none bound, do nothing code += "\t\tvec4 _tex_read = vec4(0.0);\n"; @@ -554,13 +554,13 @@ String VisualShaderNodeCubeMap::generate_global(Shader::Mode p_mode, VisualShade String u = "uniform sampler2DCube " + make_unique_id(p_type, p_id, "cube"); switch (texture_type) { case TYPE_DATA: break; - case TYPE_COLOR: u += " : hint_color"; break; + case TYPE_COLOR: u += " : hint_albedo"; break; case TYPE_NORMALMAP: u += " : hint_normal"; break; } return u + ";"; } -String VisualShaderNodeCubeMap::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeCubeMap::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { String id = make_unique_id(p_type, p_id, "cube"); String code; @@ -652,7 +652,7 @@ String VisualShaderNodeScalarOp::get_output_port_name(int p_port) const { return "op"; //no output port means the editor will be used as port } -String VisualShaderNodeScalarOp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeScalarOp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { String code = "\t" + p_output_vars[0] + " = "; switch (op) { @@ -738,7 +738,7 @@ String VisualShaderNodeVectorOp::get_output_port_name(int p_port) const { return "op"; //no output port means the editor will be used as port } -String VisualShaderNodeVectorOp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeVectorOp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { String code = "\t" + p_output_vars[0] + " = "; switch (op) { @@ -824,7 +824,7 @@ String VisualShaderNodeColorOp::get_output_port_name(int p_port) const { return "op"; //no output port means the editor will be used as port } -String VisualShaderNodeColorOp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeColorOp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { String code; static const char *axisn[3] = { "x", "y", "z" }; @@ -972,7 +972,7 @@ String VisualShaderNodeTransformMult::get_output_port_name(int p_port) const { return "mult"; //no output port means the editor will be used as port } -String VisualShaderNodeTransformMult::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeTransformMult::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { if (op == OP_AxB) { return "\t" + p_output_vars[0] + " = " + p_input_vars[0] + " * " + p_input_vars[1] + ";\n"; @@ -1041,7 +1041,7 @@ String VisualShaderNodeTransformVecMult::get_output_port_name(int p_port) const return ""; //no output port means the editor will be used as port } -String VisualShaderNodeTransformVecMult::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeTransformVecMult::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { if (op == OP_AxB) { return "\t" + p_output_vars[0] + " = ( " + p_input_vars[0] + " * vec4(" + p_input_vars[1] + ", 1.0) ).xyz;\n"; } else if (op == OP_BxA) { @@ -1115,7 +1115,7 @@ String VisualShaderNodeScalarFunc::get_output_port_name(int p_port) const { return ""; //no output port means the editor will be used as port } -String VisualShaderNodeScalarFunc::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeScalarFunc::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { static const char *scalar_func_id[FUNC_NEGATE + 1] = { "sin($)", @@ -1220,7 +1220,7 @@ String VisualShaderNodeVectorFunc::get_output_port_name(int p_port) const { return ""; //no output port means the editor will be used as port } -String VisualShaderNodeVectorFunc::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeVectorFunc::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { static const char *vec_func_id[FUNC_HSV2RGB + 1] = { "normalize($)", @@ -1321,7 +1321,7 @@ String VisualShaderNodeDotProduct::get_output_port_name(int p_port) const { return "dot"; } -String VisualShaderNodeDotProduct::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeDotProduct::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = dot( " + p_input_vars[0] + " , " + p_input_vars[1] + " );\n"; } @@ -1356,7 +1356,7 @@ String VisualShaderNodeVectorLen::get_output_port_name(int p_port) const { return "length"; } -String VisualShaderNodeVectorLen::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeVectorLen::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = length( " + p_input_vars[0] + " );\n"; } @@ -1396,7 +1396,7 @@ String VisualShaderNodeScalarInterp::get_output_port_name(int p_port) const { return "mix"; } -String VisualShaderNodeScalarInterp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeScalarInterp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = mix( " + p_input_vars[0] + " , " + p_input_vars[1] + " , " + p_input_vars[2] + " );\n"; } @@ -1438,7 +1438,7 @@ String VisualShaderNodeVectorInterp::get_output_port_name(int p_port) const { return "mix"; } -String VisualShaderNodeVectorInterp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeVectorInterp::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = mix( " + p_input_vars[0] + " , " + p_input_vars[1] + " , " + p_input_vars[2] + " );\n"; } @@ -1479,7 +1479,7 @@ String VisualShaderNodeVectorCompose::get_output_port_name(int p_port) const { return "vec"; } -String VisualShaderNodeVectorCompose::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeVectorCompose::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = vec3( " + p_input_vars[0] + " , " + p_input_vars[1] + " , " + p_input_vars[2] + " );\n"; } @@ -1524,7 +1524,7 @@ String VisualShaderNodeTransformCompose::get_output_port_name(int p_port) const return "xform"; } -String VisualShaderNodeTransformCompose::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeTransformCompose::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = mat4( vec4(" + p_input_vars[0] + ", 0.0) , vec4(" + p_input_vars[1] + ", 0.0) , vec4(" + p_input_vars[2] + ",0.0), vec4(" + p_input_vars[3] + ",1.0) );\n"; } @@ -1567,7 +1567,7 @@ String VisualShaderNodeVectorDecompose::get_output_port_name(int p_port) const { } } -String VisualShaderNodeVectorDecompose::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeVectorDecompose::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { String code; code += "\t" + p_output_vars[0] + " = " + p_input_vars[0] + ".x;\n"; code += "\t" + p_output_vars[1] + " = " + p_input_vars[0] + ".y;\n"; @@ -1613,7 +1613,7 @@ String VisualShaderNodeTransformDecompose::get_output_port_name(int p_port) cons } } -String VisualShaderNodeTransformDecompose::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeTransformDecompose::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { String code; code += "\t" + p_output_vars[0] + " = " + p_input_vars[0] + "[0].xyz;\n"; code += "\t" + p_output_vars[1] + " = " + p_input_vars[0] + "[1].xyz;\n"; @@ -1655,7 +1655,7 @@ String VisualShaderNodeScalarUniform::get_output_port_name(int p_port) const { String VisualShaderNodeScalarUniform::generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const { return "uniform float " + get_uniform_name() + ";\n"; } -String VisualShaderNodeScalarUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeScalarUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n"; } @@ -1693,7 +1693,7 @@ String VisualShaderNodeColorUniform::generate_global(Shader::Mode p_mode, Visual return "uniform vec4 " + get_uniform_name() + " : hint_color;\n"; } -String VisualShaderNodeColorUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeColorUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { String code = "\t" + p_output_vars[0] + " = " + get_uniform_name() + ".rgb;\n"; code += "\t" + p_output_vars[1] + " = " + get_uniform_name() + ".a;\n"; return code; @@ -1731,7 +1731,7 @@ String VisualShaderNodeVec3Uniform::generate_global(Shader::Mode p_mode, VisualS return "uniform vec3 " + get_uniform_name() + ";\n"; } -String VisualShaderNodeVec3Uniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeVec3Uniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n"; } @@ -1767,7 +1767,7 @@ String VisualShaderNodeTransformUniform::generate_global(Shader::Mode p_mode, Vi return "uniform mat4 " + get_uniform_name() + ";\n"; } -String VisualShaderNodeTransformUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeTransformUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return "\t" + p_output_vars[0] + " = " + get_uniform_name() + ";\n"; } @@ -1823,7 +1823,7 @@ String VisualShaderNodeTextureUniform::generate_global(Shader::Mode p_mode, Visu return code; } -String VisualShaderNodeTextureUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeTextureUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { String id = get_uniform_name(); String code = "\t{\n"; @@ -1918,7 +1918,7 @@ String VisualShaderNodeCubeMapUniform::get_output_port_name(int p_port) const { return p_port == 0 ? "rgb" : "alpha"; } -String VisualShaderNodeCubeMapUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const { +String VisualShaderNodeCubeMapUniform::generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview) const { return String(); } diff --git a/scene/resources/visual_shader_nodes.h b/scene/resources/visual_shader_nodes.h index 526a71c8c1..27b557494a 100644 --- a/scene/resources/visual_shader_nodes.h +++ b/scene/resources/visual_shader_nodes.h @@ -53,7 +53,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_constant(float p_value); float get_constant() const; @@ -81,7 +81,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_constant(Color p_value); Color get_constant() const; @@ -109,7 +109,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_constant(Vector3 p_value); Vector3 get_constant() const; @@ -137,7 +137,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_constant(Transform p_value); Transform get_constant() const; @@ -187,7 +187,7 @@ public: virtual Vector<VisualShader::DefaultTextureParam> get_default_texture_parameters(VisualShader::Type p_type, int p_id) const; virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_source(Source p_source); Source get_source() const; @@ -240,7 +240,7 @@ public: virtual Vector<VisualShader::DefaultTextureParam> get_default_texture_parameters(VisualShader::Type p_type, int p_id) const; virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_cube_map(Ref<CubeMap> p_value); Ref<CubeMap> get_cube_map() const; @@ -288,7 +288,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_operator(Operator p_op); Operator get_operator() const; @@ -333,7 +333,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_operator(Operator p_op); Operator get_operator() const; @@ -377,7 +377,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_operator(Operator p_op); Operator get_operator() const; @@ -414,7 +414,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_operator(Operator p_op); Operator get_operator() const; @@ -453,7 +453,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_operator(Operator p_op); Operator get_operator() const; @@ -510,7 +510,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_function(Function p_func); Function get_function() const; @@ -553,7 +553,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty void set_function(Function p_func); Function get_function() const; @@ -581,7 +581,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeDotProduct(); }; @@ -602,7 +602,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeVectorLen(); }; @@ -623,7 +623,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeScalarInterp(); }; @@ -644,7 +644,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeVectorInterp(); }; @@ -665,7 +665,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeVectorCompose(); }; @@ -686,7 +686,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeTransformCompose(); }; @@ -707,7 +707,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeVectorDecompose(); }; @@ -728,7 +728,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeTransformDecompose(); }; @@ -750,7 +750,7 @@ public: virtual String get_output_port_name(int p_port) const; virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeScalarUniform(); }; @@ -770,7 +770,7 @@ public: virtual String get_output_port_name(int p_port) const; virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeColorUniform(); }; @@ -790,7 +790,7 @@ public: virtual String get_output_port_name(int p_port) const; virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeVec3Uniform(); }; @@ -810,7 +810,7 @@ public: virtual String get_output_port_name(int p_port) const; virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeTransformUniform(); }; @@ -851,7 +851,7 @@ public: virtual String get_output_port_name(int p_port) const; virtual String generate_global(Shader::Mode p_mode, VisualShader::Type p_type, int p_id) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty Vector<StringName> get_editable_properties() const; @@ -883,7 +883,7 @@ public: virtual PortType get_output_port_type(int p_port) const; virtual String get_output_port_name(int p_port) const; - virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty + virtual String generate_code(Shader::Mode p_mode, VisualShader::Type p_type, int p_id, const String *p_input_vars, const String *p_output_vars, bool p_for_preview = false) const; //if no output is connected, the output var passed will be empty. if no input is connected and input is NIL, the input var passed will be empty VisualShaderNodeCubeMapUniform(); }; diff --git a/servers/physics/body_sw.cpp b/servers/physics/body_sw.cpp index 23f16c246e..f0fbbafe1c 100644 --- a/servers/physics/body_sw.cpp +++ b/servers/physics/body_sw.cpp @@ -652,7 +652,7 @@ void BodySW::simulate_motion(const Transform& p_xform,real_t p_step) { linear_velocity=(p_xform.origin - get_transform().origin)/p_step; //compute a FAKE angular velocity, not so easy - Matrix3 rot=get_transform().basis.orthonormalized().transposed() * p_xform.basis.orthonormalized(); + Basis rot=get_transform().basis.orthonormalized().transposed() * p_xform.basis.orthonormalized(); Vector3 axis; real_t angle; diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp index 77af0957e1..5ed70803ed 100644 --- a/servers/physics_2d/space_2d_sw.cpp +++ b/servers/physics_2d/space_2d_sw.cpp @@ -763,7 +763,6 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const Transform2D &p_from, co cbk.valid_dir = col_obj_shape_xform.get_axis(1).normalized(); float owc_margin = col_obj->get_shape_one_way_collision_margin(shape_idx); - print_line("margin: " + rtos(owc_margin)); cbk.valid_depth = MAX(owc_margin, p_margin); //user specified, but never less than actual margin or it wont work cbk.invalid_by_dir = 0; diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp index 99f539ea86..ca914b67e0 100644 --- a/servers/physics_2d_server.cpp +++ b/servers/physics_2d_server.cpp @@ -620,7 +620,7 @@ void Physics2DServer::_bind_methods() { ClassDB::bind_method(D_METHOD("body_clear_shapes", "body"), &Physics2DServer::body_clear_shapes); ClassDB::bind_method(D_METHOD("body_set_shape_disabled", "body", "shape_idx", "disable"), &Physics2DServer::body_set_shape_disabled); - ClassDB::bind_method(D_METHOD("body_set_shape_as_one_way_collision", "body", "shape_idx", "enable"), &Physics2DServer::body_set_shape_as_one_way_collision); + ClassDB::bind_method(D_METHOD("body_set_shape_as_one_way_collision", "body", "shape_idx", "enable", "margin"), &Physics2DServer::body_set_shape_as_one_way_collision); ClassDB::bind_method(D_METHOD("body_attach_object_instance_id", "body", "id"), &Physics2DServer::body_attach_object_instance_id); ClassDB::bind_method(D_METHOD("body_get_object_instance_id", "body"), &Physics2DServer::body_get_object_instance_id); diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp index 0c43000186..4e167be300 100644 --- a/servers/register_server_types.cpp +++ b/servers/register_server_types.cpp @@ -81,7 +81,6 @@ static void _debugger_get_resource_usage(List<ScriptDebuggerRemote::ResourceUsag ShaderTypes *shader_types = NULL; PhysicsServer *_createGodotPhysicsCallback() { - WARN_PRINT("The GodotPhysics 3D physics engine is deprecated and will be removed in Godot 3.2. You should use the Bullet physics engine instead (configurable in your project settings)."); return memnew(PhysicsServerSW); } @@ -167,8 +166,8 @@ void register_server_types() { GLOBAL_DEF(PhysicsServerManager::setting_property_name, "DEFAULT"); ProjectSettings::get_singleton()->set_custom_property_info(PhysicsServerManager::setting_property_name, PropertyInfo(Variant::STRING, PhysicsServerManager::setting_property_name, PROPERTY_HINT_ENUM, "DEFAULT")); - PhysicsServerManager::register_server("GodotPhysics - deprecated", &_createGodotPhysicsCallback); - PhysicsServerManager::set_default_server("GodotPhysics - deprecated"); + PhysicsServerManager::register_server("GodotPhysics", &_createGodotPhysicsCallback); + PhysicsServerManager::set_default_server("GodotPhysics"); } void unregister_server_types() { diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index 394592ec64..33081dcd0c 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -141,6 +141,7 @@ public: virtual void light_instance_set_transform(RID p_light_instance, const Transform &p_transform) = 0; virtual void light_instance_set_shadow_transform(RID p_light_instance, const CameraMatrix &p_projection, const Transform &p_transform, float p_far, float p_split, int p_pass, float p_bias_scale = 1.0) = 0; virtual void light_instance_mark_visible(RID p_light_instance) = 0; + virtual bool light_instances_can_render_shadow_cube() const { return true; } virtual RID reflection_atlas_create() = 0; virtual void reflection_atlas_set_size(RID p_ref_atlas, int p_size) = 0; @@ -220,6 +221,7 @@ public: virtual void textures_keep_original(bool p_enable) = 0; virtual void texture_set_proxy(RID p_proxy, RID p_base) = 0; + virtual Size2 texture_size_with_proxy(RID p_texture) const = 0; virtual void texture_set_force_redraw_if_visible(RID p_texture, bool p_enable) = 0; /* SKY API */ diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp index 84338bccca..bb02027479 100644 --- a/servers/visual/visual_server_canvas.cpp +++ b/servers/visual/visual_server_canvas.cpp @@ -1110,7 +1110,6 @@ void VisualServerCanvas::canvas_light_set_shadow_buffer_size(RID p_light, int p_ if (new_size == clight->shadow_buffer_size) return; - print_line("create shadow buffer: " + itos(p_size)); clight->shadow_buffer_size = next_power_of_2(p_size); if (clight->shadow_buffer.is_valid()) { diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp index 53e8d6a030..c8d64fca45 100644 --- a/servers/visual/visual_server_scene.cpp +++ b/servers/visual/visual_server_scene.cpp @@ -32,6 +32,7 @@ #include "core/os/os.h" #include "visual_server_global.h" #include "visual_server_raster.h" +#include <new> /* CAMERA API */ RID VisualServerScene::camera_create() { @@ -573,6 +574,19 @@ void VisualServerScene::instance_set_transform(RID p_instance, const Transform & if (instance->transform == p_transform) return; //must be checked to avoid worst evil +#ifdef DEBUG_ENABLED + + for (int i = 0; i < 4; i++) { + const Vector3 &v = i < 3 ? p_transform.basis.elements[i] : p_transform.origin; + ERR_FAIL_COND(Math::is_inf(v.x)); + ERR_FAIL_COND(Math::is_nan(v.x)); + ERR_FAIL_COND(Math::is_inf(v.y)); + ERR_FAIL_COND(Math::is_nan(v.y)); + ERR_FAIL_COND(Math::is_inf(v.z)); + ERR_FAIL_COND(Math::is_nan(v.z)); + } + +#endif instance->transform = p_transform; _instance_queue_update(instance, true); } @@ -1240,7 +1254,9 @@ void VisualServerScene::_update_instance_lightmap_captures(Instance *p_instance) //print_line("update captures for pos: " + p_instance->transform.origin); - zeromem(p_instance->lightmap_capture_data.ptrw(), 12 * sizeof(Color)); + for (int i = 0; i < 12; i++) + new (&p_instance->lightmap_capture_data.ptrw()[i]) Color; + //this could use some sort of blending.. for (List<Instance *>::Element *E = geom->lightmap_captures.front(); E; E = E->next()) { const PoolVector<RasterizerStorage::LightmapCaptureOctree> *octree = VSG::storage->lightmap_capture_get_octree_ptr(E->get()->base); @@ -1535,106 +1551,102 @@ bool VisualServerScene::_light_instance_update_shadow(Instance *p_instance, cons VS::LightOmniShadowMode shadow_mode = VSG::storage->light_omni_get_shadow_mode(p_instance->base); - switch (shadow_mode) { - case VS::LIGHT_OMNI_SHADOW_DUAL_PARABOLOID: { - - for (int i = 0; i < 2; i++) { - - //using this one ensures that raster deferred will have it - - float radius = VSG::storage->light_get_param(p_instance->base, VS::LIGHT_PARAM_RANGE); + if (shadow_mode == VS::LIGHT_OMNI_SHADOW_DUAL_PARABOLOID || !VSG::scene_render->light_instances_can_render_shadow_cube()) { - float z = i == 0 ? -1 : 1; - Vector<Plane> planes; - planes.resize(5); - planes.write[0] = light_transform.xform(Plane(Vector3(0, 0, z), radius)); - planes.write[1] = light_transform.xform(Plane(Vector3(1, 0, z).normalized(), radius)); - planes.write[2] = light_transform.xform(Plane(Vector3(-1, 0, z).normalized(), radius)); - planes.write[3] = light_transform.xform(Plane(Vector3(0, 1, z).normalized(), radius)); - planes.write[4] = light_transform.xform(Plane(Vector3(0, -1, z).normalized(), radius)); + for (int i = 0; i < 2; i++) { - int cull_count = p_scenario->octree.cull_convex(planes, instance_shadow_cull_result, MAX_INSTANCE_CULL, VS::INSTANCE_GEOMETRY_MASK); - Plane near_plane(light_transform.origin, light_transform.basis.get_axis(2) * z); + //using this one ensures that raster deferred will have it - for (int j = 0; j < cull_count; j++) { - - Instance *instance = instance_shadow_cull_result[j]; - if (!instance->visible || !((1 << instance->base_type) & VS::INSTANCE_GEOMETRY_MASK) || !static_cast<InstanceGeometryData *>(instance->base_data)->can_cast_shadows) { - cull_count--; - SWAP(instance_shadow_cull_result[j], instance_shadow_cull_result[cull_count]); - j--; - } else { - if (static_cast<InstanceGeometryData *>(instance->base_data)->material_is_animated) { - animated_material_found = true; - } + float radius = VSG::storage->light_get_param(p_instance->base, VS::LIGHT_PARAM_RANGE); - instance->depth = near_plane.distance_to(instance->transform.origin); - instance->depth_layer = 0; + float z = i == 0 ? -1 : 1; + Vector<Plane> planes; + planes.resize(5); + planes.write[0] = light_transform.xform(Plane(Vector3(0, 0, z), radius)); + planes.write[1] = light_transform.xform(Plane(Vector3(1, 0, z).normalized(), radius)); + planes.write[2] = light_transform.xform(Plane(Vector3(-1, 0, z).normalized(), radius)); + planes.write[3] = light_transform.xform(Plane(Vector3(0, 1, z).normalized(), radius)); + planes.write[4] = light_transform.xform(Plane(Vector3(0, -1, z).normalized(), radius)); + + int cull_count = p_scenario->octree.cull_convex(planes, instance_shadow_cull_result, MAX_INSTANCE_CULL, VS::INSTANCE_GEOMETRY_MASK); + Plane near_plane(light_transform.origin, light_transform.basis.get_axis(2) * z); + + for (int j = 0; j < cull_count; j++) { + + Instance *instance = instance_shadow_cull_result[j]; + if (!instance->visible || !((1 << instance->base_type) & VS::INSTANCE_GEOMETRY_MASK) || !static_cast<InstanceGeometryData *>(instance->base_data)->can_cast_shadows) { + cull_count--; + SWAP(instance_shadow_cull_result[j], instance_shadow_cull_result[cull_count]); + j--; + } else { + if (static_cast<InstanceGeometryData *>(instance->base_data)->material_is_animated) { + animated_material_found = true; } - } - VSG::scene_render->light_instance_set_shadow_transform(light->instance, CameraMatrix(), light_transform, radius, 0, i); - VSG::scene_render->render_shadow(light->instance, p_shadow_atlas, i, (RasterizerScene::InstanceBase **)instance_shadow_cull_result, cull_count); + instance->depth = near_plane.distance_to(instance->transform.origin); + instance->depth_layer = 0; + } } - } break; - case VS::LIGHT_OMNI_SHADOW_CUBE: { - float radius = VSG::storage->light_get_param(p_instance->base, VS::LIGHT_PARAM_RANGE); - CameraMatrix cm; - cm.set_perspective(90, 1, 0.01, radius); - - for (int i = 0; i < 6; i++) { - - //using this one ensures that raster deferred will have it - - static const Vector3 view_normals[6] = { - Vector3(-1, 0, 0), - Vector3(+1, 0, 0), - Vector3(0, -1, 0), - Vector3(0, +1, 0), - Vector3(0, 0, -1), - Vector3(0, 0, +1) - }; - static const Vector3 view_up[6] = { - Vector3(0, -1, 0), - Vector3(0, -1, 0), - Vector3(0, 0, -1), - Vector3(0, 0, +1), - Vector3(0, -1, 0), - Vector3(0, -1, 0) - }; - - Transform xform = light_transform * Transform().looking_at(view_normals[i], view_up[i]); - - Vector<Plane> planes = cm.get_projection_planes(xform); + VSG::scene_render->light_instance_set_shadow_transform(light->instance, CameraMatrix(), light_transform, radius, 0, i); + VSG::scene_render->render_shadow(light->instance, p_shadow_atlas, i, (RasterizerScene::InstanceBase **)instance_shadow_cull_result, cull_count); + } + } else { //shadow cube - int cull_count = p_scenario->octree.cull_convex(planes, instance_shadow_cull_result, MAX_INSTANCE_CULL, VS::INSTANCE_GEOMETRY_MASK); + float radius = VSG::storage->light_get_param(p_instance->base, VS::LIGHT_PARAM_RANGE); + CameraMatrix cm; + cm.set_perspective(90, 1, 0.01, radius); - Plane near_plane(xform.origin, -xform.basis.get_axis(2)); - for (int j = 0; j < cull_count; j++) { + for (int i = 0; i < 6; i++) { - Instance *instance = instance_shadow_cull_result[j]; - if (!instance->visible || !((1 << instance->base_type) & VS::INSTANCE_GEOMETRY_MASK) || !static_cast<InstanceGeometryData *>(instance->base_data)->can_cast_shadows) { - cull_count--; - SWAP(instance_shadow_cull_result[j], instance_shadow_cull_result[cull_count]); - j--; - } else { - if (static_cast<InstanceGeometryData *>(instance->base_data)->material_is_animated) { - animated_material_found = true; - } - instance->depth = near_plane.distance_to(instance->transform.origin); - instance->depth_layer = 0; + //using this one ensures that raster deferred will have it + + static const Vector3 view_normals[6] = { + Vector3(-1, 0, 0), + Vector3(+1, 0, 0), + Vector3(0, -1, 0), + Vector3(0, +1, 0), + Vector3(0, 0, -1), + Vector3(0, 0, +1) + }; + static const Vector3 view_up[6] = { + Vector3(0, -1, 0), + Vector3(0, -1, 0), + Vector3(0, 0, -1), + Vector3(0, 0, +1), + Vector3(0, -1, 0), + Vector3(0, -1, 0) + }; + + Transform xform = light_transform * Transform().looking_at(view_normals[i], view_up[i]); + + Vector<Plane> planes = cm.get_projection_planes(xform); + + int cull_count = p_scenario->octree.cull_convex(planes, instance_shadow_cull_result, MAX_INSTANCE_CULL, VS::INSTANCE_GEOMETRY_MASK); + + Plane near_plane(xform.origin, -xform.basis.get_axis(2)); + for (int j = 0; j < cull_count; j++) { + + Instance *instance = instance_shadow_cull_result[j]; + if (!instance->visible || !((1 << instance->base_type) & VS::INSTANCE_GEOMETRY_MASK) || !static_cast<InstanceGeometryData *>(instance->base_data)->can_cast_shadows) { + cull_count--; + SWAP(instance_shadow_cull_result[j], instance_shadow_cull_result[cull_count]); + j--; + } else { + if (static_cast<InstanceGeometryData *>(instance->base_data)->material_is_animated) { + animated_material_found = true; } + instance->depth = near_plane.distance_to(instance->transform.origin); + instance->depth_layer = 0; } - - VSG::scene_render->light_instance_set_shadow_transform(light->instance, cm, xform, radius, 0, i); - VSG::scene_render->render_shadow(light->instance, p_shadow_atlas, i, (RasterizerScene::InstanceBase **)instance_shadow_cull_result, cull_count); } - //restore the regular DP matrix - VSG::scene_render->light_instance_set_shadow_transform(light->instance, CameraMatrix(), light_transform, radius, 0, 0); + VSG::scene_render->light_instance_set_shadow_transform(light->instance, cm, xform, radius, 0, i); + VSG::scene_render->render_shadow(light->instance, p_shadow_atlas, i, (RasterizerScene::InstanceBase **)instance_shadow_cull_result, cull_count); + } - } break; + //restore the regular DP matrix + VSG::scene_render->light_instance_set_shadow_transform(light->instance, CameraMatrix(), light_transform, radius, 0, 0); } } break; diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp index 92b17eae47..7a7ae3a823 100644 --- a/servers/visual/visual_server_viewport.cpp +++ b/servers/visual/visual_server_viewport.cpp @@ -97,7 +97,7 @@ void VisualServerViewport::_draw_viewport(Viewport *p_viewport, ARVRInterface::E RasterizerCanvas::Light *cl = F->get(); if (cl->enabled && cl->texture.is_valid()) { //not super efficient.. - Size2 tsize(VSG::storage->texture_get_width(cl->texture), VSG::storage->texture_get_height(cl->texture)); + Size2 tsize = VSG::storage->texture_size_with_proxy(cl->texture); tsize *= cl->scale; Vector2 offset = tsize / 2.0; diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp index 02acf72951..14c9a29ae5 100644 --- a/servers/visual_server.cpp +++ b/servers/visual_server.cpp @@ -2406,7 +2406,7 @@ VisualServer::VisualServer() { GLOBAL_DEF("rendering/quality/shading/force_blinn_over_ggx.mobile", true); GLOBAL_DEF("rendering/quality/depth_prepass/enable", true); - GLOBAL_DEF("rendering/quality/depth_prepass/disable_for_vendors", "PowerVR,Mali,Adreno"); + GLOBAL_DEF("rendering/quality/depth_prepass/disable_for_vendors", "PowerVR,Mali,Adreno,Apple"); GLOBAL_DEF("rendering/quality/filters/use_nearest_mipmap_filter", false); } diff --git a/thirdparty/README.md b/thirdparty/README.md index 186f183ea2..738835c70a 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -202,6 +202,9 @@ Files extracted from upstream source: - all .h files in include/theora/ as theora/ - COPYING and LICENSE +Upstream patches included in the `patches` directory have been applied +on top of the 1.1.1 source (not included in any stable release yet). + ## libvorbis diff --git a/thirdparty/libtheora/decode.c b/thirdparty/libtheora/decode.c index 7be66463d8..bde967b794 100644 --- a/thirdparty/libtheora/decode.c +++ b/thirdparty/libtheora/decode.c @@ -397,10 +397,10 @@ static int oc_dec_init(oc_dec_ctx *_dec,const th_info *_info, int qsum; qsum=0; for(qti=0;qti<2;qti++)for(pli=0;pli<3;pli++){ - qsum+=_dec->state.dequant_tables[qti][pli][qi][12]+ - _dec->state.dequant_tables[qti][pli][qi][17]+ - _dec->state.dequant_tables[qti][pli][qi][18]+ - _dec->state.dequant_tables[qti][pli][qi][24]<<(pli==0); + qsum+=_dec->state.dequant_tables[qi][pli][qti][12]+ + _dec->state.dequant_tables[qi][pli][qti][17]+ + _dec->state.dequant_tables[qi][pli][qti][18]+ + _dec->state.dequant_tables[qi][pli][qti][24]<<(pli==0); } _dec->pp_sharp_mod[qi]=-(qsum>>11); } diff --git a/thirdparty/libtheora/patches/theora.git-0ae66d565e6bead8604d312bc1a4e9dccf245c88.patch b/thirdparty/libtheora/patches/theora.git-0ae66d565e6bead8604d312bc1a4e9dccf245c88.patch new file mode 100644 index 0000000000..1b9c8e20be --- /dev/null +++ b/thirdparty/libtheora/patches/theora.git-0ae66d565e6bead8604d312bc1a4e9dccf245c88.patch @@ -0,0 +1,38 @@ +From 0ae66d565e6bead8604d312bc1a4e9dccf245c88 Mon Sep 17 00:00:00 2001 +From: Tim Terriberry <tterribe@xiph.org> +Date: Tue, 8 May 2012 02:51:57 +0000 +Subject: [PATCH] Fix pp_sharp_mod calculation. + +This was broken when the dequant_tables indexing changed in commit + r16102, but it only affected post-processing quality, so we never + noticed. +With gcc 4.8.0, this can now trigger a segfault during decoder + initialization. + +svn path=/trunk/theora/; revision=18268 +--- + decode.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/decode.c b/decode.c +index b803505..9f2516a 100644 +--- a/decode.c ++++ b/decode.c +@@ -400,10 +400,10 @@ static int oc_dec_init(oc_dec_ctx *_dec,const th_info *_info, + int qsum; + qsum=0; + for(qti=0;qti<2;qti++)for(pli=0;pli<3;pli++){ +- qsum+=_dec->state.dequant_tables[qti][pli][qi][12]+ +- _dec->state.dequant_tables[qti][pli][qi][17]+ +- _dec->state.dequant_tables[qti][pli][qi][18]+ +- _dec->state.dequant_tables[qti][pli][qi][24]<<(pli==0); ++ qsum+=_dec->state.dequant_tables[qi][pli][qti][12]+ ++ _dec->state.dequant_tables[qi][pli][qti][17]+ ++ _dec->state.dequant_tables[qi][pli][qti][18]+ ++ _dec->state.dequant_tables[qi][pli][qti][24]<<(pli==0); + } + _dec->pp_sharp_mod[qi]=-(qsum>>11); + } +-- +2.11.0 + diff --git a/thirdparty/misc/base64.h b/thirdparty/misc/base64.h index 4c300382c1..ffcd0af973 100644 --- a/thirdparty/misc/base64.h +++ b/thirdparty/misc/base64.h @@ -11,8 +11,8 @@ extern "C" { -uint32_t base64_encode(char *to, char *from, uint32_t len); -uint32_t base64_decode(char *to, char *from, uint32_t len); +long base64_encode(char *to, char *from, unsigned int len); +long base64_decode(char *to, char *from, unsigned int len); }; #endif /* BASE64_H */ |