From 8b8c58da79e13fead112aff3f68185bbf504d76d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 13 Mar 2020 17:50:31 +0100 Subject: [PATCH] Sync Sphinx and Weblate templates with current docs --- docs | 2 +- sphinx/templates/about/docs_changelog.pot | 2 +- sphinx/templates/about/faq.pot | 2 +- sphinx/templates/about/index.pot | 2 +- sphinx/templates/about/introduction.pot | 2 +- sphinx/templates/community/channels.pot | 2 +- ...best_practices_for_engine_contributors.pot | 238 + .../contributing/bug_triage_guidelines.pot | 2 +- .../contributing/code_style_guidelines.pot | 2 +- .../contributing/docs_writing_guidelines.pot | 74 +- .../contributing/documentation_guidelines.pot | 2 +- .../community/contributing/index.pot | 2 +- .../community/contributing/pr_workflow.pot | 2 +- .../updating_the_class_reference.pot | 2 +- .../contributing/ways_to_contribute.pot | 2 +- sphinx/templates/community/tutorials.pot | 54 +- .../compiling/compiling_for_android.pot | 4 +- .../compiling/compiling_for_ios.pot | 2 +- .../compiling/compiling_for_osx.pot | 82 +- .../compiling/compiling_for_uwp.pot | 4 +- .../compiling/compiling_for_web.pot | 2 +- .../compiling/compiling_for_windows.pot | 2 +- .../compiling/compiling_for_x11.pot | 50 +- .../compiling/compiling_with_mono.pot | 2 +- .../compiling_with_script_encryption_key.pot | 2 +- .../cross-compiling_for_ios_on_linux.pot | 2 +- .../development/compiling/getting_source.pot | 2 +- .../templates/development/compiling/index.pot | 2 +- .../introduction_to_the_buildsystem.pot | 2 +- .../compiling/optimizing_for_size.pot | 2 +- .../cpp/binding_to_external_libraries.pot | 2 +- .../development/cpp/configuring_an_ide.pot | 12 +- .../templates/development/cpp/core_types.pot | 2 +- .../development/cpp/custom_audiostreams.pot | 2 +- .../development/cpp/custom_godot_servers.pot | 2 +- .../development/cpp/custom_modules_in_cpp.pot | 106 +- .../cpp/custom_resource_format_loaders.pot | 63 +- sphinx/templates/development/cpp/index.pot | 2 +- .../cpp/inheritance_class_tree.pot | 2 +- .../cpp/introduction_to_godot_development.pot | 2 +- .../development/cpp/object_class.pot | 2 +- .../development/cpp/variant_class.pot | 2 +- .../development/editor/creating_icons.pot | 2 +- sphinx/templates/development/editor/index.pot | 2 +- .../development/editor/introduction.pot | 2 +- .../development/file_formats/index.pot | 2 +- .../development/file_formats/tscn.pot | 2 +- .../editor/command_line_tutorial.pot | 2 +- .../editor/external_editor.pot | 2 +- .../getting_started/editor/index.pot | 2 +- .../getting_started/editor/unity_to_godot.pot | 4 +- .../scripting/c_sharp/c_sharp_basics.pot | 42 +- .../scripting/c_sharp/c_sharp_differences.pot | 2 +- .../scripting/c_sharp/c_sharp_features.pot | 62 +- .../scripting/c_sharp/c_sharp_style_guide.pot | 2 +- .../scripting/c_sharp/index.pot | 2 +- .../scripting/cross_language_scripting.pot | 2 +- .../scripting/gdscript/gdscript_advanced.pot | 6 +- .../scripting/gdscript/gdscript_basics.pot | 750 +- .../scripting/gdscript/gdscript_exports.pot | 2 +- .../gdscript/gdscript_format_string.pot | 2 +- .../gdscript/gdscript_styleguide.pot | 4 +- .../scripting/gdscript/index.pot | 2 +- .../scripting/gdscript/static_typing.pot | 124 +- .../getting_started/scripting/index.pot | 2 +- .../visual_script/getting_started.pot | 2 +- .../scripting/visual_script/index.pot | 2 +- .../visual_script/nodes_purposes.pot | 8 +- .../what_is_visual_scripting.pot | 2 +- .../step_by_step/animations.pot | 4 +- .../step_by_step/exporting.pot | 4 +- .../step_by_step/filesystem.pot | 2 +- .../step_by_step/godot_design_philosophy.pot | 2 +- .../getting_started/step_by_step/index.pot | 2 +- .../step_by_step/instancing.pot | 18 +- .../step_by_step/instancing_continued.pot | 2 +- .../intro_to_the_editor_interface.pot | 40 +- .../step_by_step/resources.pot | 2 +- .../step_by_step/scene_tree.pot | 2 +- .../step_by_step/scenes_and_nodes.pot | 42 +- .../step_by_step/scripting.pot | 4 +- .../step_by_step/scripting_continued.pot | 2 +- .../getting_started/step_by_step/signals.pot | 46 +- .../step_by_step/singletons_autoload.pot | 2 +- .../step_by_step/splash_screen.pot | 2 +- .../step_by_step/ui_code_a_life_bar.pot | 4 +- .../step_by_step/ui_game_user_interface.pot | 10 +- .../ui_introduction_to_the_ui_system.pot | 4 +- .../step_by_step/ui_main_menu.pot | 10 +- .../step_by_step/your_first_game.pot | 8 +- .../assets/escn_exporter/animation.pot | 2 +- .../workflow/assets/escn_exporter/index.pot | 2 +- .../workflow/assets/escn_exporter/lights.pot | 2 +- .../assets/escn_exporter/material.pot | 2 +- .../workflow/assets/escn_exporter/mesh.pot | 2 +- .../workflow/assets/escn_exporter/physics.pot | 2 +- .../assets/escn_exporter/skeleton.pot | 2 +- .../workflow/assets/import_process.pot | 2 +- .../assets/importing_audio_samples.pot | 2 +- .../workflow/assets/importing_images.pot | 2 +- .../workflow/assets/importing_scenes.pot | 2 +- .../assets/importing_translations.pot | 104 +- .../getting_started/workflow/assets/index.pot | 2 +- .../autoloads_versus_internal_nodes.pot | 4 +- .../best_practices/data_preferences.pot | 2 +- .../best_practices/godot_interfaces.pot | 2 +- .../best_practices/godot_notifications.pot | 2 +- .../workflow/best_practices/index.pot | 2 +- .../introduction_best_practices.pot | 2 +- .../best_practices/logic_preferences.pot | 2 +- .../best_practices/node_alternatives.pot | 2 +- .../best_practices/scene_organization.pot | 2 +- .../best_practices/scenes_versus_scripts.pot | 2 +- .../best_practices/what_are_godot_classes.pot | 2 +- .../workflow/export/android_custom_build.pot | 4 +- .../changing_application_icon_for_windows.pot | 2 +- .../workflow/export/exporting_for_android.pot | 148 +- .../workflow/export/exporting_for_ios.pot | 2 +- .../workflow/export/exporting_for_pc.pot | 2 +- .../workflow/export/exporting_for_uwp.pot | 2 +- .../workflow/export/exporting_for_web.pot | 2 +- .../workflow/export/exporting_pcks.pot | 8 +- .../workflow/export/exporting_projects.pot | 2 +- .../workflow/export/feature_tags.pot | 2 +- .../getting_started/workflow/export/index.pot | 2 +- .../workflow/export/one-click_deploy.pot | 2 +- .../getting_started/workflow/index.pot | 2 +- .../workflow/project_setup/index.pot | 2 +- .../project_setup/project_organization.pot | 2 +- sphinx/templates/index.pot | 2 +- .../tutorials/2d/2d_lights_and_shadows.pot | 6 +- sphinx/templates/tutorials/2d/2d_meshes.pot | 2 +- sphinx/templates/tutorials/2d/2d_movement.pot | 2 +- .../tutorials/2d/2d_sprite_animation.pot | 88 +- .../templates/tutorials/2d/2d_transforms.pot | 2 +- .../templates/tutorials/2d/canvas_layers.pot | 2 +- .../tutorials/2d/custom_drawing_in_2d.pot | 2 +- sphinx/templates/tutorials/2d/index.pot | 2 +- .../tutorials/2d/particle_systems_2d.pot | 2 +- .../templates/tutorials/2d/using_tilemaps.pot | 4 +- .../3d/3d_performance_and_limitations.pot | 2 +- .../tutorials/3d/baked_lightmaps.pot | 2 +- sphinx/templates/tutorials/3d/csg_tools.pot | 2 +- .../3d/environment_and_post_processing.pot | 2 +- .../tutorials/3d/fps_tutorial/index.pot | 2 +- .../tutorials/3d/fps_tutorial/part_five.pot | 2 +- .../tutorials/3d/fps_tutorial/part_four.pot | 2 +- .../tutorials/3d/fps_tutorial/part_one.pot | 8 +- .../tutorials/3d/fps_tutorial/part_six.pot | 2 +- .../tutorials/3d/fps_tutorial/part_three.pot | 272 +- .../tutorials/3d/fps_tutorial/part_two.pot | 14 +- sphinx/templates/tutorials/3d/gi_probes.pot | 2 +- .../tutorials/3d/high_dynamic_range.pot | 46 +- sphinx/templates/tutorials/3d/index.pot | 2 +- .../tutorials/3d/introduction_to_3d.pot | 6 +- .../tutorials/3d/lights_and_shadows.pot | 2 +- .../tutorials/3d/reflection_probes.pot | 2 +- .../tutorials/3d/spatial_material.pot | 2 +- .../templates/tutorials/3d/using_gridmaps.pot | 8 +- .../3d/using_multi_mesh_instance.pot | 2 +- .../tutorials/3d/using_transforms.pot | 2 +- .../animating_thousands_of_fish.pot | 2 +- .../controlling_thousands_of_fish.pot | 2 +- .../tutorials/3d/vertex_animation/index.pot | 2 +- .../tutorials/animation/2d_skeletons.pot | 2 +- .../tutorials/animation/animation_tree.pot | 2 +- .../tutorials/animation/cutout_animation.pot | 6 +- .../templates/tutorials/animation/index.pot | 2 +- .../tutorials/animation/introduction_2d.pot | 4 +- sphinx/templates/tutorials/assetlib/index.pot | 2 +- .../assetlib/uploading_to_assetlib.pot | 338 +- .../tutorials/assetlib/using_assetlib.pot | 2 +- .../tutorials/assetlib/what_is_assetlib.pot | 22 +- .../templates/tutorials/audio/audio_buses.pot | 2 +- .../tutorials/audio/audio_streams.pot | 2 +- sphinx/templates/tutorials/audio/index.pot | 2 +- .../audio/recording_with_microphone.pot | 2 +- .../tutorials/audio/sync_with_audio.pot | 26 +- sphinx/templates/tutorials/content/index.pot | 2 +- .../tutorials/content/making_trees.pot | 2 +- .../content/procedural_geometry/arraymesh.pot | 2 +- .../procedural_geometry/immediategeometry.pot | 4 +- .../content/procedural_geometry/index.pot | 2 +- .../procedural_geometry/meshdatatool.pot | 2 +- .../procedural_geometry/surfacetool.pot | 2 +- sphinx/templates/tutorials/debug/index.pot | 2 +- .../debug/overview_of_debugging_tools.pot | 2 +- .../tutorials/gui/bbcode_in_richtextlabel.pot | 2 +- .../tutorials/gui/custom_gui_controls.pot | 2 +- .../tutorials/gui/gui_containers.pot | 2 +- .../templates/tutorials/gui/gui_skinning.pot | 2 +- sphinx/templates/tutorials/gui/index.pot | 2 +- .../tutorials/gui/size_and_anchors.pot | 2 +- sphinx/templates/tutorials/i18n/index.pot | 2 +- .../i18n/internationalizing_games.pot | 2 +- sphinx/templates/tutorials/i18n/locales.pot | 2 +- .../i18n/localization_using_gettext.pot | 2 +- .../tutorials/inputs/custom_mouse_cursor.pot | 2 +- sphinx/templates/tutorials/inputs/index.pot | 2 +- .../tutorials/inputs/input_examples.pot | 116 +- .../templates/tutorials/inputs/inputevent.pot | 2 +- .../inputs/mouse_and_input_coordinates.pot | 2 +- .../tutorials/io/background_loading.pot | 2 +- sphinx/templates/tutorials/io/data_paths.pot | 2 +- .../tutorials/io/encrypting_save_games.pot | 2 +- sphinx/templates/tutorials/io/index.pot | 2 +- .../templates/tutorials/io/saving_games.pot | 2 +- .../legal/complying_with_licenses.pot | 2 +- sphinx/templates/tutorials/legal/index.pot | 2 +- .../tutorials/math/beziers_and_curves.pot | 2 +- sphinx/templates/tutorials/math/index.pot | 2 +- .../tutorials/math/interpolation.pot | 2 +- .../math/matrices_and_transforms.pot | 428 +- .../templates/tutorials/math/vector_math.pot | 2 +- .../tutorials/math/vectors_advanced.pot | 2 +- .../misc/binary_serialization_api.pot | 2 +- .../tutorials/misc/change_scenes_manually.pot | 2 +- .../misc/gles2_gles3_differences.pot | 4 +- .../tutorials/misc/handling_quit_requests.pot | 2 +- sphinx/templates/tutorials/misc/index.pot | 2 +- .../misc/instancing_with_signals.pot | 2 +- .../tutorials/misc/jitter_stutter.pot | 2 +- .../tutorials/misc/pausing_games.pot | 2 +- .../misc/running_code_in_the_editor.pot | 2 +- .../tutorials/misc/state_design_pattern.pot | 130 + .../networking/high_level_multiplayer.pot | 226 +- .../networking/http_client_class.pot | 2 +- .../networking/http_request_class.pot | 2 +- .../templates/tutorials/networking/index.pot | 2 +- .../tutorials/networking/ssl_certificates.pot | 6 +- .../templates/tutorials/networking/webrtc.pot | 2 +- .../tutorials/networking/websocket.pot | 2 +- .../tutorials/optimization/index.pot | 2 +- .../optimization/using_multimesh.pot | 2 +- .../tutorials/optimization/using_servers.pot | 22 +- sphinx/templates/tutorials/physics/index.pot | 2 +- .../physics/kinematic_character_2d.pot | 2 +- .../physics/physics_introduction.pot | 2 +- .../tutorials/physics/ragdoll_system.pot | 2 +- .../tutorials/physics/ray-casting.pot | 2 +- .../tutorials/physics/rigid_body.pot | 2 +- .../templates/tutorials/physics/soft_body.pot | 2 +- .../tutorials/physics/using_area_2d.pot | 2 +- .../physics/using_kinematic_body_2d.pot | 2 +- .../platform/android_in_app_purchases.pot | 2 +- .../templates/tutorials/platform/consoles.pot | 2 +- .../platform/customizing_html5_shell.pot | 12 +- sphinx/templates/tutorials/platform/index.pot | 2 +- .../tutorials/platform/services_for_ios.pot | 2 +- .../plugins/android/android_plugin.pot | 250 +- .../tutorials/plugins/android/index.pot | 2 +- .../plugins/editor/import_plugins.pot | 2 +- .../tutorials/plugins/editor/index.pot | 2 +- .../plugins/editor/inspector_plugins.pot | 24 +- .../plugins/editor/installing_plugins.pot | 78 + .../editor/making_main_screen_plugins.pot | 60 +- .../plugins/editor/making_plugins.pot | 2 +- .../plugins/editor/spatial_gizmos.pot | 2 +- .../plugins/editor/visual_shader_plugins.pot | 2 +- .../plugins/gdnative/gdnative-c-example.pot | 132 +- .../plugins/gdnative/gdnative-cpp-example.pot | 160 +- .../tutorials/plugins/gdnative/index.pot | 2 +- sphinx/templates/tutorials/plugins/index.pot | 2 +- .../shading/advanced_postprocessing.pot | 2 +- sphinx/templates/tutorials/shading/index.pot | 2 +- .../intro_to_shaders_water_workshop.pot | 2 +- .../migrating_to_godot_shader_language.pot | 2 +- .../shading/screen-reading_shaders.pot | 2 +- .../tutorials/shading/shader_materials.pot | 2 +- .../shading_reference/canvas_item_shader.pot | 2 +- .../shading/shading_reference/index.pot | 2 +- .../shading_reference/particle_shader.pot | 2 +- .../shading/shading_reference/shaders.pot | 2 +- .../shading_reference/shading_language.pot | 942 +-- .../shading_reference/spatial_shader.pot | 2 +- .../tutorials/shading/visual_shaders.pot | 2 +- .../shading/your_first_shader/index.pot | 2 +- .../your_first_shader/what_are_shaders.pot | 2 +- .../your_first_canvasitem_shader.pot | 2 +- .../your_first_spatial_shader.pot | 2 +- .../your_second_spatial_shader.pot | 2 +- sphinx/templates/tutorials/threads/index.pot | 2 +- .../tutorials/threads/thread_safe_apis.pot | 2 +- .../threads/using_multiple_threads.pot | 2 +- .../viewports/custom_postprocessing.pot | 2 +- .../templates/tutorials/viewports/index.pot | 2 +- .../viewports/multiple_resolutions.pot | 2 +- .../viewports/using_viewport_as_texture.pot | 2 +- .../tutorials/viewports/viewports.pot | 2 +- sphinx/templates/tutorials/vr/index.pot | 2 +- sphinx/templates/tutorials/vr/vr_primer.pot | 2 +- .../vr/vr_starter_tutorial/index.pot | 2 +- .../vr_starter_tutorial_part_one.pot | 2 +- .../vr_starter_tutorial_part_two.pot | 2 +- templates_list.txt | 3 + weblate/docs.pot | 6095 ++++++++++------- 296 files changed, 7117 insertions(+), 5030 deletions(-) create mode 100644 sphinx/templates/community/contributing/best_practices_for_engine_contributors.pot create mode 100644 sphinx/templates/tutorials/misc/state_design_pattern.pot create mode 100644 sphinx/templates/tutorials/plugins/editor/installing_plugins.pot diff --git a/docs b/docs index a7dce8ee1e..4567e5af9d 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit a7dce8ee1e59aac8f443f82baff1c9899b0369c6 +Subproject commit 4567e5af9dfa285e1b8a214911deb357e947ff65 diff --git a/sphinx/templates/about/docs_changelog.pot b/sphinx/templates/about/docs_changelog.pot index d892900bf3..6f9eef6226 100644 --- a/sphinx/templates/about/docs_changelog.pot +++ b/sphinx/templates/about/docs_changelog.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/about/faq.pot b/sphinx/templates/about/faq.pot index 3482f14896..0b9d80cc86 100644 --- a/sphinx/templates/about/faq.pot +++ b/sphinx/templates/about/faq.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/about/index.pot b/sphinx/templates/about/index.pot index 2611653bb4..81420afa5f 100644 --- a/sphinx/templates/about/index.pot +++ b/sphinx/templates/about/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/about/introduction.pot b/sphinx/templates/about/introduction.pot index e16b84bf18..4a65f8e0aa 100644 --- a/sphinx/templates/about/introduction.pot +++ b/sphinx/templates/about/introduction.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/channels.pot b/sphinx/templates/community/channels.pot index e4c64401df..0fa112c4f7 100644 --- a/sphinx/templates/community/channels.pot +++ b/sphinx/templates/community/channels.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/best_practices_for_engine_contributors.pot b/sphinx/templates/community/contributing/best_practices_for_engine_contributors.pot new file mode 100644 index 0000000000..0832bbd1ed --- /dev/null +++ b/sphinx/templates/community/contributing/best_practices_for_engine_contributors.pot @@ -0,0 +1,238 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2020, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:4 +msgid "Best practices for engine contributors" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:7 +msgid "Introduction" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:9 +msgid "Godot has a large amount of users who have the ability to contribute, given the project itself is aimed mainly at users with the ability to do programming. Despite this, not all of them have the same level of experience working in large projects or in software engineering, which can lead to common misunderstandings and bad practices during the process of contributing code to the project." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:12 +msgid "Language" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:14 +msgid "The scope of this document is to be a list of best practices for contributors to follow, as well as to creating a language they can use to refer to common situations that arise in the process of submitting their contributions." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:16 +msgid "While some may find it useful to extend this to general software development, our intention is to just restrict to situations that are most common in our project." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:18 +msgid "Contributions are most of the time categorized as bug fixes, enhancements or new features. To abstract this idea, we will call them *Solutions*, because they always seek to solve something that can be described as a *Problem*." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:21 +msgid "Best Practices" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:24 +msgid "#1: The problem always comes first" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:26 +msgid "Many contributors are extremely creative and just enjoy the process of designing abstract data structures, creating nice user interfaces,or simply love programming. Whatever the case may be, they come up with cool ideas, which may not be actually solving any actual problems." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:30 +msgid "These are usually called *Solutions in search of a problem*. In an ideal world, they would not be harmful but, in reality, code takes time to write, takes space as source and binary and requires maintenance once it exists. Avoiding the addition of anything unnecessary is always considered a good practice in software development." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:33 +msgid "#2: The problem has to exist" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:35 +msgid "This is a variation of the previous practice. I believe most developers agree that adding anything unnecessary is not a good idea, but what constitutes what is necessary and what isn't?" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:39 +msgid "The answer to this question is that the problem needs to *exist*. It must not be speculation or a belief. The user must be using the software as intended to create something they *need*. In this process, the user may stumble into a problem that requires a solution in order to continue, or in order to achieve greater productivity. In this case, *a solution is needed*." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:41 +msgid "Believing that problems may arise in the future and that the software needs to be ready to solve them by the time they appear is called *\"Future proofing\"* and its characterized by lines of thought such as:" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:43 +msgid "I think it would be useful for users to..." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:44 +msgid "I think users will eventually need to..." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:46 +msgid "This is generally considered a bad habit, because trying to solve problems that *don't actually exist* in the present will very often lead to code that will be written but never used, or to code that is considerably more complex to use and maintain than it needs to be." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:49 +msgid "#3: The problem has to be complex or frequent" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:51 +msgid "Software is designed to solve problems, but we can't expect it to solve *every problem that exists under the sun*. As a game engine, Godot will solve problems for you, so it helps you to make games better and faster, but it won't make the *entire game* for you. A line must be drawn somewhere." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:55 +msgid "Whether a problem is worth solving is determined by the difficulty the user has to work around it. This difficulty can be expressed as:" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:57 +msgid "The complexity of the problem" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:58 +msgid "The frequency the problem" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:60 +msgid "If the problem is *too complex* for most users to solve, the software must offer a ready made solution for it. Likewise, if the problem is easy for the user to workaround, offering such a solution is unnecessary and it's up to the user to do it." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:62 +msgid "The exception, however, is when the user stumbles into this problem *frequently enough* that having to do the simple solution every time becomes an annoyance. In this case, the software must offer a solution to simplify this use case." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:64 +msgid "In our experience, in most cases it's usually obvious to tell when a problem is complex or frequent, but cases may arise where drawing this line is difficult. This is why discussing with other developers (next point) is always advised." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:67 +msgid "#4: The solution must be discussed with others" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:69 +msgid "It is often the case that, when users stumble upon problems, they are only immersed in their own project, so they will naturally try to solve the problem from their own perspective, thinking only about their use case." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:71 +msgid "Because of this, user proposed solutions don't always contemplate other use cases that developers are often aware of, so they are often biased towards their own requirements." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:75 +msgid "For developers, the perspective is different. They may find the user's problem too unique to justify a solution (instead of an user workaround), or maybe they will suggest a partial (usually simpler or lower level) solution that applies to a wider range of known problems, and leave the rest of the solution up to the user." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:77 +msgid "In any case, before attempting a contribution, it is important to discuss the actual problems with the other developers or contributors, so a better agreement on implementation can be reached." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:79 +msgid "The only exception, in this case, is when an area of code has a clear owner (agreed by the other contributors), who talks to users directly and has the most knowledge to implement a solution directly." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:82 +msgid "#5: To each problem, its own solution" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:84 +msgid "For programmers, it is always a most enjoyable challenge to find the most optimal solutions to problems. Things, however, may go overboard sometimes and programmers will try to come up with solutions that solve as many problems as possible." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:86 +msgid "The situation will often take a turn for the worse when, in order to make this solution appear even more fantastic and flexible, the pure speculation-based problems (as described in #2) also make their appearance on stage." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:90 +msgid "The main problem is that, in reality, it rarely works this way. Most of the time, just writing an individual solution to each problem results in code that is simpler and more maintainable." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:92 +msgid "Additionally, solutions that target individual problems are better for the users, as they find something that does exactly what they need, without having to learn and remember a more complex system they will only need for simple tasks." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:94 +msgid "Big and flexible solutions also have an additional drawback which is that, over time, they rarely are flexible enough for all users, which keep requesting more functions added (and making the API and codebase more and more complex)." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:97 +msgid "#6: Cater to common use cases, leave the door open for the rare ones" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:99 +msgid "This is a continuation of the previous point, which further explains why this way of thinking and designing software is preferred." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:101 +msgid "As mentioned before (in point #2), it is very difficult for us (as human beings who design software) to actually understand all future user needs. Trying to write very flexible structures that cater to many use cases at once is often a mistake." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:103 +msgid "We may come up with something we believe is brilliant, but when it's actually used, we will find that users will never even use half of it, or that they will require features that don't quite accommodate our original design, forcing us to either throw it away or make it even more complex." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:105 +msgid "The question is then, how to design software that gives users what *we know they need*, but that is flexible enough to allow them to do *what we don't know they might need* in the future?" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:109 +msgid "The answer to this question is that, to ensure users still can do what they want to do, we need to give them access to a *low level API* that they can use to achieve what they want, even if it's more work for them because it means reimplementing some of the logic that already exists." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:111 +msgid "In real-life scenarios, these use cases will be at most rare and uncommon anyway, so it makes sense a custom solution needs to be written. This is why it's important to still provide users the basic building blocks to do it." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:114 +msgid "#7: Solutions must be local" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:116 +msgid "When looking for a solution to a problem, be it implementing a new feature or fixing a bug, sometimes the easiest path is to add data or a new function in the core layers of code." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:118 +msgid "The main problem here is, adding something to the core layers that will only be used from a single location far away will not only make the code more difficult to follow (split in two), but also make the core API larger, more complex, more difficult to understand in general." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:120 +msgid "This is bad, because readability and cleanness of core APIs is always of extreme importance given how much code relies from it, and because it's key for new contributors as a starting point to learning the codebase." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:126 +msgid "The common reasoning for wanting to do this is that it's usually less code to simply add a hack in the core layers." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:128 +msgid "Despite this, this practice is not advised. Generally, the code for a solution should be closer to where the problem originates, even if it involves more code, duplicated, more complex or is less efficient. More creativity might be needed, but this path is always the advised one." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:131 +msgid "#8: Don't use complex canned solutions for simple problems" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:133 +msgid "Not every problem has a simple solution and, many times, the right choice is to use a third party library to solve the problem." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:135 +msgid "As Godot requires to be shipped in a large amount of platforms, we just can't link libraries dynamically. Instead, we bundle them in our source tree." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:139 +msgid "As a result, we are very picky with what goes in, and we tend to prefer smaller libraries (in fact, single header ones are our favorite). Only in cases where there is no other choice we end up bundling something larger." +msgstr "" + diff --git a/sphinx/templates/community/contributing/bug_triage_guidelines.pot b/sphinx/templates/community/contributing/bug_triage_guidelines.pot index fdcfc4d6c9..0f7df39df9 100644 --- a/sphinx/templates/community/contributing/bug_triage_guidelines.pot +++ b/sphinx/templates/community/contributing/bug_triage_guidelines.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/code_style_guidelines.pot b/sphinx/templates/community/contributing/code_style_guidelines.pot index c5e3fb69b0..4e3ab6b895 100644 --- a/sphinx/templates/community/contributing/code_style_guidelines.pot +++ b/sphinx/templates/community/contributing/code_style_guidelines.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/docs_writing_guidelines.pot b/sphinx/templates/community/contributing/docs_writing_guidelines.pot index a9068868af..ca2599bcbb 100644 --- a/sphinx/templates/community/contributing/docs_writing_guidelines.pot +++ b/sphinx/templates/community/contributing/docs_writing_guidelines.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -89,7 +89,7 @@ msgid "A technical writer's job is to pack as much information as possible into msgstr "" #: ../../docs/community/contributing/docs_writing_guidelines.rst:36 -msgid "7 rules for a clear english" +msgid "7 rules for clear English" msgstr "" #: ../../docs/community/contributing/docs_writing_guidelines.rst:41 @@ -397,59 +397,87 @@ msgstr "" msgid "In the class reference, always surround arguments with ``[code][/code]``. In the documentation and in Godot, it will display like ``this``. When you edit XML files in the Godot repository, replace existing arguments written like 'this' or \\`this\\` with ``[code]this[/code]``." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:445 -msgid "Common vocabulary to use in godot's docs" +#: ../../docs/community/contributing/docs_writing_guidelines.rst:448 +msgid "Common vocabulary to use in Godot's documentation" msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:447 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:450 msgid "The developers chose some specific words to refer to areas of the interface. They're used in the sources, in the documentation, and you should always use them instead of synonyms, so the users know what you're talking about." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:455 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:458 msgid "Overview of the interface and common vocabulary" msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:457 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:460 msgid "In the top left corner of the editor lie the ``main menus``. In the center, the buttons change the ``workspace``. And together the buttons in the top right are the ``playtest buttons``. The area in the center, that displays the 2D or the 3D space, is the ``viewport``. At its top, you find a list of ``tools`` inside the ``toolbar``." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:463 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:466 msgid "The tabs or dockable panels on either side of the viewport are ``docks``. You have the ``FileSystem dock``, the ``Scene dock`` that contains your scene tree, the ``Import dock``, the ``Node dock``, and the ``Inspector`` or ``Inspector dock``. With the default layout you may call the tabbed docks ``tabs``: the ``Scene tab``, the ``Node tab``..." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:469 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:472 msgid "The Animation, Debugger, etc. at the bottom of the viewport are ``panels``. Together they make up the ``bottom panels``." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:472 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:475 msgid "Foldable areas of the Inspector are ``sections``. The node's parent class names, which you can't fold, are ``Classes`` e.g. the ``KinematicBody2D class``. And individual lines with key-value pairs are ``properties``. E.g. ``position`` or ``modulate color`` are both ``properties``." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:479 -msgid "Image contribution guidelines" -msgstr "" - -#: ../../docs/community/contributing/docs_writing_guidelines.rst:481 -msgid "A significant part of the documentation is images, and there are several important guidelines to follow." +#: ../../docs/community/contributing/docs_writing_guidelines.rst:482 +msgid "Keyboard shortcut guidelines" msgstr "" #: ../../docs/community/contributing/docs_writing_guidelines.rst:484 +msgid "Keyboard and mouse shortcuts should make use of the ``:kbd:`` tag, which allows shortcuts to stand out from the rest of the text and inline code. Use the compact form for modifier keys (:kbd:`Ctrl`/:kbd:`Cmd`) instead of their spelled out form (:kbd:`Control`/:kbd:`Command`). For combinations, use the ``+`` symbol with a space on either side of the symbol." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:490 +msgid "Make sure to mention shortcuts that differ on macOS compared to other platforms. On macOS, ``Cmd`` often replaces ``Ctrl`` in keyboard shortcuts." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:493 +msgid "Try to integrate the shortcut into sentences the best you can. Here are some examples with the ``:kbd:`` tag left as-is for better visibility:" +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:496 +msgid "Press ``:kbd:`Ctrl + Alt + T``` to toggle the panel (``:kbd:`Cmd + Alt + T``` on macOS)." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:497 +msgid "Press ``:kbd:`Space``` and hold the left mouse button to pan in the 2D editor." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:498 +msgid "Press ``:kbd:`Shift + Up Arrow``` to move the node upwards by 8 pixels." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:501 +msgid "Image contribution guidelines" +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:503 +msgid "A significant part of the documentation is images, and there are several important guidelines to follow." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:506 msgid "First, you should always be using the default editor theme and text when taking screenshots." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:486 -msgid "For 3D screenshots use 4xMSAA, enable anisotropic filtering on the projects textures, and set the anisotropic filter quality to 16x in Project Settings" +#: ../../docs/community/contributing/docs_writing_guidelines.rst:509 +msgid "To improve the apperance of 3D screenshots, use 4× MSAA, enable anisotropic filtering on the project's textures, and set the anisotropic filter quality to 16× in Project Settings." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:489 -msgid "Screenshot size should not exceed 1920x1080." +#: ../../docs/community/contributing/docs_writing_guidelines.rst:513 +msgid "Screenshot sizes should not exceed 1920×1080 to ensure fast loading on slower connections." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:491 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:516 msgid "When you need to highlight an area of the editor to show something, like a button or option, use a 2 pixel thick outline without a bevel." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:494 -msgid "Before you add or replace any images in the documentation, they should be run through a png compressor to save size. The built in lossless compressor in programs like Krita or Photoshop should be done. However you should also use a lossy one, such as `pngquant `_ where almost no image quality is lost during compression." +#: ../../docs/community/contributing/docs_writing_guidelines.rst:519 +msgid "Before you add or replace any images in the documentation, they should be run through a PNG compressor to save size. The built in lossless compressor in programs like Krita or Photoshop should be enough. For heavier images, also look into using a lossy compressor, such as `pngquant `_ where almost no image quality is lost during compression." msgstr "" diff --git a/sphinx/templates/community/contributing/documentation_guidelines.pot b/sphinx/templates/community/contributing/documentation_guidelines.pot index 54cc2595d7..d5d49b67a9 100644 --- a/sphinx/templates/community/contributing/documentation_guidelines.pot +++ b/sphinx/templates/community/contributing/documentation_guidelines.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/index.pot b/sphinx/templates/community/contributing/index.pot index e237f72e93..f10bffc863 100644 --- a/sphinx/templates/community/contributing/index.pot +++ b/sphinx/templates/community/contributing/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/pr_workflow.pot b/sphinx/templates/community/contributing/pr_workflow.pot index 79ec7957be..8374ea3533 100644 --- a/sphinx/templates/community/contributing/pr_workflow.pot +++ b/sphinx/templates/community/contributing/pr_workflow.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/updating_the_class_reference.pot b/sphinx/templates/community/contributing/updating_the_class_reference.pot index 1b8e0e033d..5f124176b6 100644 --- a/sphinx/templates/community/contributing/updating_the_class_reference.pot +++ b/sphinx/templates/community/contributing/updating_the_class_reference.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/ways_to_contribute.pot b/sphinx/templates/community/contributing/ways_to_contribute.pot index 58bd516c91..f1bec09e42 100644 --- a/sphinx/templates/community/contributing/ways_to_contribute.pot +++ b/sphinx/templates/community/contributing/ways_to_contribute.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/tutorials.pot b/sphinx/templates/community/tutorials.pot index 435d9aa786..8f3b043dec 100644 --- a/sphinx/templates/community/tutorials.pot +++ b/sphinx/templates/community/tutorials.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,7 +25,7 @@ msgid "This is a list of third-party tutorials and resources created by the Godo msgstr "" #: ../../docs/community/tutorials.rst:8 -msgid "Think there is something missing here? Feel free to submit a `Pull Request `_ as always." +msgid "Think there is something missing here? Feel free to submit a `Pull Request `_ as always." msgstr "" #: ../../docs/community/tutorials.rst:11 @@ -49,94 +49,98 @@ msgid "Video tutorials" msgstr "" #: ../../docs/community/tutorials.rst:22 -msgid "`Emilio `_" +msgid "`Emilio `_ (2D, GDScript and VisualScript)." msgstr "" #: ../../docs/community/tutorials.rst:23 -msgid "`GDQuest `_" +msgid "`GDQuest `_ (2D and 3D, GDScript, VisualScript and C#)." msgstr "" #: ../../docs/community/tutorials.rst:24 -msgid "`Game Endeavor `_" +msgid "`Game Endeavor `_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:25 -msgid "`Game from Scratch `_" +msgid "`Game from Scratch `_ (2D and 3D, GDScript and C#)." msgstr "" #: ../../docs/community/tutorials.rst:26 -msgid "`HeartBeast `_" +msgid "`HeartBeast `_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:27 -msgid "`Jeremy Bullock `_" +msgid "`Jeremy Bullock `_ (2D and 3D, GDScript, VisualScript and C#)." msgstr "" #: ../../docs/community/tutorials.rst:28 -msgid "`KidsCanCode `__" +msgid "`KidsCanCode `__ (2D and 3D, GDScript and VisualScript)." msgstr "" #: ../../docs/community/tutorials.rst:29 -msgid "`Mister Taft Creates `_" +msgid "`Mister Taft Creates `_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:30 -msgid "`Miziziziz `_" +msgid "`Miziziziz `_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:31 -msgid "`P1X / Krzysztof Jankowski `_" +msgid "`P1X / Krzysztof Jankowski `_ (3D)." msgstr "" #: ../../docs/community/tutorials.rst:32 -msgid "`Pigdev `_" +msgid "`Pigdev `_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:33 -msgid "`Steincodes `__" +msgid "`Steincodes `__ (2D, GDScript and VisualScript)." msgstr "" #: ../../docs/community/tutorials.rst:34 -msgid "`Code with Tom `_" +msgid "`TheBuffED `_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:35 -msgid "`BornCG `_" +msgid "`Code with Tom `_ (2D and 3D, GDScript)." msgstr "" -#: ../../docs/community/tutorials.rst:38 +#: ../../docs/community/tutorials.rst:36 +msgid "`BornCG `_ (3D, GDScript)." +msgstr "" + +#: ../../docs/community/tutorials.rst:39 msgid "Text tutorials" msgstr "" -#: ../../docs/community/tutorials.rst:40 +#: ../../docs/community/tutorials.rst:41 msgid "`Godot Recipes by KidsCanCode `__" msgstr "" -#: ../../docs/community/tutorials.rst:41 +#: ../../docs/community/tutorials.rst:42 msgid "`Steincodes `__" msgstr "" -#: ../../docs/community/tutorials.rst:44 +#: ../../docs/community/tutorials.rst:45 msgid "Devlogs" msgstr "" -#: ../../docs/community/tutorials.rst:46 +#: ../../docs/community/tutorials.rst:47 msgid "`Andrea Catania (Physics & AI) `_" msgstr "" -#: ../../docs/community/tutorials.rst:47 +#: ../../docs/community/tutorials.rst:48 msgid "`Bastiaan Olij (AR & VR) `_" msgstr "" -#: ../../docs/community/tutorials.rst:50 +#: ../../docs/community/tutorials.rst:51 msgid "Resources" msgstr "" -#: ../../docs/community/tutorials.rst:52 +#: ../../docs/community/tutorials.rst:53 msgid "`awesome-godot: A curated list of resources by Calinou `_" msgstr "" -#: ../../docs/community/tutorials.rst:53 +#: ../../docs/community/tutorials.rst:54 msgid "`Zeef Godot Engine: A curated directory of resources by Andre Schmitz `_" msgstr "" diff --git a/sphinx/templates/development/compiling/compiling_for_android.pot b/sphinx/templates/development/compiling/compiling_for_android.pot index 577c824a40..1be893df3d 100644 --- a/sphinx/templates/development/compiling/compiling_for_android.pot +++ b/sphinx/templates/development/compiling/compiling_for_android.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -93,7 +93,7 @@ msgid "Set the environment variable ``ANDROID_NDK_ROOT`` to point to the Android msgstr "" #: ../../docs/development/compiling/compiling_for_android.rst:63 -msgid "To set those environment variables on Windows, press **Windows + R**, type \"control system\", then click on **Advanced system settings** in the left pane, then click on **Environment variables** on the window that appears." +msgid "To set those environment variables on Windows, press :kbd:`Windows + R`, type \"control system\", then click on **Advanced system settings** in the left pane, then click on **Environment variables** on the window that appears." msgstr "" #: ../../docs/development/compiling/compiling_for_android.rst:68 diff --git a/sphinx/templates/development/compiling/compiling_for_ios.pot b/sphinx/templates/development/compiling/compiling_for_ios.pot index 5b4973ce1a..d8b7831f37 100644 --- a/sphinx/templates/development/compiling/compiling_for_ios.pot +++ b/sphinx/templates/development/compiling/compiling_for_ios.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/compiling_for_osx.pot b/sphinx/templates/development/compiling/compiling_for_osx.pot index ca1b48de7d..a209b89822 100644 --- a/sphinx/templates/development/compiling/compiling_for_osx.pot +++ b/sphinx/templates/development/compiling/compiling_for_osx.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,82 +25,82 @@ msgid "Requirements" msgstr "" #: ../../docs/development/compiling/compiling_for_osx.rst:11 -msgid "For compiling under Linux or other Unix variants, the following is required:" +msgid "For compiling under macOS, the following is required:" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:13 +msgid "Python 3.5+ (recommended) or Python 2.7+." msgstr "" #: ../../docs/development/compiling/compiling_for_osx.rst:14 -msgid "Python 2.7+ or Python 3.5+" +msgid "`SCons `_ build system." msgstr "" #: ../../docs/development/compiling/compiling_for_osx.rst:15 -msgid "SCons build system" -msgstr "" - -#: ../../docs/development/compiling/compiling_for_osx.rst:16 -msgid "Xcode (or the more lightweight Command Line Tools for Xcode)" +msgid "`Xcode `_ (or the more lightweight Command Line Tools for Xcode)." msgstr "" #: ../../docs/development/compiling/compiling_for_osx.rst:17 -msgid "*Optional* - yasm (for WebM SIMD optimizations)" +msgid "*Optional* - `yasm `_ (for WebM SIMD optimizations)." msgstr "" #: ../../docs/development/compiling/compiling_for_osx.rst:19 +msgid "If you have `Homebrew `_ installed, you can easily install SCons and yasm using the following command::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:24 +msgid "Installing Homebrew will also fetch the Command Line Tools for Xcode automatically if you don't have them already." +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:27 msgid "For a general overview of SCons usage for Godot, see :ref:`doc_introduction_to_the_buildsystem`." msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:23 +#: ../../docs/development/compiling/compiling_for_osx.rst:31 msgid "Compiling" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:25 -msgid "Start a terminal, go to the root dir of the engine source code and type:" +#: ../../docs/development/compiling/compiling_for_osx.rst:33 +msgid "Start a terminal, go to the root directory of the engine source code and type::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:31 -msgid "If all goes well, the resulting binary executable will be placed in the \"bin\" subdirectory. This executable file contains the whole engine and runs without any dependencies. Executing it will bring up the project manager." +#: ../../docs/development/compiling/compiling_for_osx.rst:37 +msgid "If all goes well, the resulting binary executable will be placed in the ``bin/`` subdirectory. This executable file contains the whole engine and runs without any dependencies. Executing it will bring up the project manager." msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:36 -msgid "To create an .app like in the official builds, you need to use the template located in ``misc/dist/osx_tools.app``. Typically, for a \".64\" optimised binary built with `scons p=osx target=release_debug`:" +#: ../../docs/development/compiling/compiling_for_osx.rst:42 +msgid "To create an .app like in the official builds, you need to use the template located in ``misc/dist/osx_tools.app``. Typically, for an optimized editor binary built with ``scons p=osx target=release_debug``::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:48 -msgid "Compiling for 32 and 64-bit" +#: ../../docs/development/compiling/compiling_for_osx.rst:52 +msgid "Cross-compiling for macOS from Linux" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:50 -msgid "All macOS versions after 10.6 are 64-bit exclusive, so the executable will be a \".64\" file by default for most users. If you would like to compile a \".fat\" executable which contains both 32 and 64-bit code, you can do so by specifying the bits in the scons command like so:" +#: ../../docs/development/compiling/compiling_for_osx.rst:54 +msgid "It is possible to compile for macOS in a Linux environment (and maybe also in Windows using the Windows Subsystem for Linux). For that, you'll need to install `OSXCross `__ to be able to use macOS as a target. First, follow the instructions to install it:" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:60 -msgid "Cross-compiling" +#: ../../docs/development/compiling/compiling_for_osx.rst:59 +msgid "Clone the `OSXCross repository `__ somewhere on your machine (or download a ZIP file and extract it somewhere), e.g.::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:62 -msgid "It is possible to compile for macOS in a Linux environment (and maybe also in Windows with Cygwin). For that you will need `OSXCross `__ to be able to use macOS as target. First, follow the instructions to install it:" -msgstr "" - -#: ../../docs/development/compiling/compiling_for_osx.rst:67 -msgid "Clone the `OSXCross repository ` somewhere on your machine (or download a zip file and extract it somewhere), e.g.:" -msgstr "" - -#: ../../docs/development/compiling/compiling_for_osx.rst:75 +#: ../../docs/development/compiling/compiling_for_osx.rst:65 msgid "Follow the instructions to package the SDK: https://github.com/tpoechtrager/osxcross#packaging-the-sdk" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:77 +#: ../../docs/development/compiling/compiling_for_osx.rst:67 msgid "Follow the instructions to install OSXCross: https://github.com/tpoechtrager/osxcross#installation" msgstr "" +#: ../../docs/development/compiling/compiling_for_osx.rst:70 +msgid "After that, you will need to define the ``OSXCROSS_ROOT`` as the path to the OSXCross installation (the same place where you cloned the repository/extracted the zip), e.g.::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:76 +msgid "Now you can compile with SCons like you normally would::" +msgstr "" + #: ../../docs/development/compiling/compiling_for_osx.rst:80 -msgid "After that, you will need to define the ``OSXCROSS_ROOT`` as the path to the OSXCross installation (the same place where you cloned the repository/extracted the zip), e.g.:" -msgstr "" - -#: ../../docs/development/compiling/compiling_for_osx.rst:88 -msgid "Now you can compile with SCons like you normally would:" -msgstr "" - -#: ../../docs/development/compiling/compiling_for_osx.rst:94 -msgid "If you have an OSXCross SDK version different from the one expected by the SCons buildsystem, you can specify a custom one with the ``osxcross_sdk`` argument:" +msgid "If you have an OSXCross SDK version different from the one expected by the SCons buildsystem, you can specify a custom one with the ``osxcross_sdk`` argument::" msgstr "" diff --git a/sphinx/templates/development/compiling/compiling_for_uwp.pot b/sphinx/templates/development/compiling/compiling_for_uwp.pot index 3bf51d6714..55b4876f9d 100644 --- a/sphinx/templates/development/compiling/compiling_for_uwp.pot +++ b/sphinx/templates/development/compiling/compiling_for_uwp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -149,6 +149,6 @@ msgid "To ease the workflow, you can open the \"Solution Properties\" and in the msgstr "" #: ../../docs/development/compiling/compiling_for_uwp.rst:142 -msgid "Now you can just run the project and your app should open. You can use also the \"Start Without Debugging\" from the \"Debug\" menu (Ctrl+F5) to make it launch faster." +msgid "Now you can just run the project and your app should open. You can also use the \"Start Without Debugging\" option from the \"Debug\" menu (or press :kbd:`Ctrl + F5`) to make it launch faster." msgstr "" diff --git a/sphinx/templates/development/compiling/compiling_for_web.pot b/sphinx/templates/development/compiling/compiling_for_web.pot index 5b951ad9a0..edbe3ca16a 100644 --- a/sphinx/templates/development/compiling/compiling_for_web.pot +++ b/sphinx/templates/development/compiling/compiling_for_web.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/compiling_for_windows.pot b/sphinx/templates/development/compiling/compiling_for_windows.pot index 1e4e176619..086ff34ac5 100644 --- a/sphinx/templates/development/compiling/compiling_for_windows.pot +++ b/sphinx/templates/development/compiling/compiling_for_windows.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/compiling_for_x11.pot b/sphinx/templates/development/compiling/compiling_for_x11.pot index f6b14f518e..b37f90ebc4 100644 --- a/sphinx/templates/development/compiling/compiling_for_x11.pot +++ b/sphinx/templates/development/compiling/compiling_for_x11.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -144,43 +144,71 @@ msgstr "" msgid "If you are compiling Godot for production use, then you can make the final executable smaller and faster by adding the SCons option ``target=release_debug``." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:118 +#: ../../docs/development/compiling/compiling_for_x11.rst:117 +msgid "If you are compiling Godot with GCC, you can make the binary even smaller and faster by adding the SCons option ``use_lto=yes``. As link-time optimization is a memory-intensive process, this will require about 3 GB of available RAM while compiling." +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:123 msgid "Building export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:120 +#: ../../docs/development/compiling/compiling_for_x11.rst:125 msgid "Linux binaries usually won't run on distributions that are older than the distribution they were built on. If you wish to distribute binaries that work on most distributions, you should build them on an old distribution such as Ubuntu 16.04. You can use a virtual machine or a container to set up a suitable build environment." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:128 +#: ../../docs/development/compiling/compiling_for_x11.rst:133 msgid "To build X11 (Linux, \\*BSD) export templates, run the build system with the following parameters:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:131 +#: ../../docs/development/compiling/compiling_for_x11.rst:136 msgid "(32 bits)" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:138 +#: ../../docs/development/compiling/compiling_for_x11.rst:143 msgid "(64 bits)" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:145 +#: ../../docs/development/compiling/compiling_for_x11.rst:150 msgid "Note that cross-compiling for the opposite bits (64/32) as your host platform is not always straight-forward and might need a chroot environment." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:148 +#: ../../docs/development/compiling/compiling_for_x11.rst:153 msgid "To create standard export templates, the resulting files must be copied to:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:154 +#: ../../docs/development/compiling/compiling_for_x11.rst:159 msgid "and named like this (even for \\*BSD which is seen as \"Linux X11\" by Godot):" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:163 +#: ../../docs/development/compiling/compiling_for_x11.rst:168 msgid "However, if you are writing your custom modules or custom C++ code, you might instead want to configure your binaries as custom export templates here:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:169 +#: ../../docs/development/compiling/compiling_for_x11.rst:174 msgid "You don't even need to copy them, you can just reference the resulting files in the ``bin/`` directory of your Godot source folder, so the next time you build, you automatically have the custom templates referenced." msgstr "" +#: ../../docs/development/compiling/compiling_for_x11.rst:179 +msgid "Using Clang and LLD for faster development" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:181 +msgid "You can also use Clang and LLD to build Godot. This has two upsides compared to the default GCC + GNU ld setup:" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:184 +msgid "LLD links Godot significantly faster compared to GNU ld or gold. This leads to faster iteration times." +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:186 +msgid "Clang tends to give more useful error messages compared to GCC." +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:188 +msgid "To do so, install Clang and the ``lld`` package from your distribution's package manager then use the following SCons command::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:193 +msgid "It's still recommended to use GCC for production builds as they can be compiled using link-time optimization, making the resulting binaries smaller and faster." +msgstr "" + diff --git a/sphinx/templates/development/compiling/compiling_with_mono.pot b/sphinx/templates/development/compiling/compiling_with_mono.pot index 222a00a611..29e875f54d 100644 --- a/sphinx/templates/development/compiling/compiling_with_mono.pot +++ b/sphinx/templates/development/compiling/compiling_with_mono.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/compiling_with_script_encryption_key.pot b/sphinx/templates/development/compiling/compiling_with_script_encryption_key.pot index 7d5c002f5a..dc6e8208f9 100644 --- a/sphinx/templates/development/compiling/compiling_with_script_encryption_key.pot +++ b/sphinx/templates/development/compiling/compiling_with_script_encryption_key.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/cross-compiling_for_ios_on_linux.pot b/sphinx/templates/development/compiling/cross-compiling_for_ios_on_linux.pot index 087ca729f8..488e2d2a40 100644 --- a/sphinx/templates/development/compiling/cross-compiling_for_ios_on_linux.pot +++ b/sphinx/templates/development/compiling/cross-compiling_for_ios_on_linux.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/getting_source.pot b/sphinx/templates/development/compiling/getting_source.pot index f58e0258ac..2db507b371 100644 --- a/sphinx/templates/development/compiling/getting_source.pot +++ b/sphinx/templates/development/compiling/getting_source.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/index.pot b/sphinx/templates/development/compiling/index.pot index e5a9ff7b87..a9bcdef0b1 100644 --- a/sphinx/templates/development/compiling/index.pot +++ b/sphinx/templates/development/compiling/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/introduction_to_the_buildsystem.pot b/sphinx/templates/development/compiling/introduction_to_the_buildsystem.pot index de88eba24f..1efd035149 100644 --- a/sphinx/templates/development/compiling/introduction_to_the_buildsystem.pot +++ b/sphinx/templates/development/compiling/introduction_to_the_buildsystem.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/optimizing_for_size.pot b/sphinx/templates/development/compiling/optimizing_for_size.pot index fce15a9af9..b8e04647a7 100644 --- a/sphinx/templates/development/compiling/optimizing_for_size.pot +++ b/sphinx/templates/development/compiling/optimizing_for_size.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/binding_to_external_libraries.pot b/sphinx/templates/development/cpp/binding_to_external_libraries.pot index f668afa2e7..758ae0b9d1 100644 --- a/sphinx/templates/development/cpp/binding_to_external_libraries.pot +++ b/sphinx/templates/development/cpp/binding_to_external_libraries.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide.pot b/sphinx/templates/development/cpp/configuring_an_ide.pot index 44e553f478..afd8695dce 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -394,15 +394,15 @@ msgid "Ensure that C/C++ extension is installed. You can find instructions in `d msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:273 -msgid "Now open cloned godot folder in VS Code (File > Open Folder...)" +msgid "Open cloned godot folder in VS Code with ``File > Open Folder...``" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:275 -msgid "In order to build the project, we need two configuration files: *launch.json* and *tasks.json*. To create them:" +msgid "In order to build the project, you need two configuration files: *launch.json* and *tasks.json*. To create them:" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:278 -msgid "Open Debug view (Ctrl + Shift + D) and select cogwheel with an orange dot:" +msgid "Open *Debug* view by pressing :kbd:`Ctrl + Shift + D` and select cogwheel with an orange dot:" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:282 @@ -418,7 +418,7 @@ msgid "(Note that *godot.x11.tools.64* in \"program\" value might be named diffe msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:290 -msgid "Create *tasks.json* by starting the Debug process (F5). VS Code will show a dialog with a *Configure Task* button. Tap it and select *Create tasks.json file from template*, then select *Others*" +msgid "Create *tasks.json* by starting the Debug process with :kbd:`F5`. VS Code will show a dialog with a *Configure Task* button. Tap it and select *Create tasks.json file from template*, then select *Others*" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:292 @@ -442,7 +442,7 @@ msgid "Android Studio" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:308 -msgid "`Android Studio `_ is a `Jetbrain `_ IDE for Android development. It has a feature-rich editor which supports Java and C/C++, so it can be used for development of the Godot core engine, and Android platform codebases." +msgid "`Android Studio `_ is a `JetBrains `_ IDE for Android development. It has a feature-rich editor which supports Java and C/C++, so it can be used for development of the Godot core engine, and Android platform codebases." msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:313 diff --git a/sphinx/templates/development/cpp/core_types.pot b/sphinx/templates/development/cpp/core_types.pot index e7e71d26e6..a81020a95e 100644 --- a/sphinx/templates/development/cpp/core_types.pot +++ b/sphinx/templates/development/cpp/core_types.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/custom_audiostreams.pot b/sphinx/templates/development/cpp/custom_audiostreams.pot index e1172fc0d2..fe5ccd87fa 100644 --- a/sphinx/templates/development/cpp/custom_audiostreams.pot +++ b/sphinx/templates/development/cpp/custom_audiostreams.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/custom_godot_servers.pot b/sphinx/templates/development/cpp/custom_godot_servers.pot index c018d702a0..3dbc0eada3 100644 --- a/sphinx/templates/development/cpp/custom_godot_servers.pot +++ b/sphinx/templates/development/cpp/custom_godot_servers.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/custom_modules_in_cpp.pot b/sphinx/templates/development/cpp/custom_modules_in_cpp.pot index bb0d485fad..b52072792f 100644 --- a/sphinx/templates/development/cpp/custom_modules_in_cpp.pot +++ b/sphinx/templates/development/cpp/custom_modules_in_cpp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -153,158 +153,186 @@ msgid "If your module is meant to be accessed from the running project (not just msgstr "" #: ../../docs/development/cpp/custom_modules_in_cpp.rst:261 -msgid "Improving the build system for development" +msgid "Customizing module types initialization" msgstr "" #: ../../docs/development/cpp/custom_modules_in_cpp.rst:263 +msgid "Modules can interact with other built-in engine classes during runtime and even affect the way core types are initialized. So far, we've been using ``register_summator_types`` as a way to bring in module classes to be available within the engine." +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:268 +msgid "A crude order of the engine setup can be summarized as a list of the following type registration methods:" +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:287 +msgid "Our ``Summator`` class is initialized during the ``register_module_types()`` call. Imagine that we need to satisfy some common module run-time dependency (like singletons), or allow us to override existing engine method callbacks before they can be assigned by the engine itself. In that case, we want to ensure that our module classes are registered *before* any other built-in type." +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:293 +msgid "This is where we can define an optional ``preregister_summator_types()`` method which will be called before anything else during the ``preregister_module_types()`` engine setup stage." +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:297 +msgid "We now need to add this method to ``register_types`` header and source files:" +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:309 +msgid "Unlike other register methods, we have to explicitly define ``MODULE_SUMMATOR_HAS_PREREGISTER`` to let the build system know what relevant method calls to include at compile time. The module's name has to be converted to uppercase as well." +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:337 +msgid "Improving the build system for development" +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:339 msgid "So far we defined a clean and simple SCsub that allows us to add the sources of our new module as part of the Godot binary." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:266 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:342 msgid "This static approach is fine when we want to build a release version of our game given we want all the modules in a single binary." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:269 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:345 msgid "However the trade-off is every single change means a full recompilation of the game. Even if SCons is able to detect and recompile only the file that have changed, finding such files and eventually linking the final binary is a long and costly part." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:274 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:350 msgid "The solution to avoid such a cost is to build our own module as a shared library that will be dynamically loaded when starting our game's binary." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:307 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:383 msgid "Once compiled, we should end up with a ``bin`` directory containing both the ``godot*`` binary and our ``libsummator*.so``. However given the .so is not in a standard directory (like ``/usr/lib``), we have to help our binary find it during runtime with the ``LD_LIBRARY_PATH`` environ variable:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:317 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:393 msgid "**note**: Pay attention you have to ``export`` the environ variable otherwise you won't be able to play your project from within the editor." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:320 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:396 msgid "On top of that, it would be nice to be able to select whether to compile our module as shared library (for development) or as a part of the Godot binary (for release). To do that we can define a custom flag to be passed to SCons using the `ARGUMENT` command:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:352 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:428 msgid "Now by default ``scons`` command will build our module as part of Godot's binary and as a shared library when passing ``summator_shared=yes``." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:355 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:431 msgid "Finally you can even speedup build further by explicitly specifying your shared module as target in the scons command:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:363 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:439 msgid "Writing custom documentation" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:365 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:441 msgid "Writing documentation may seem like a boring task, but it is highly recommended to document your newly created module in order to make it easier for users to benefit from it. Not to mention that the code you've written one year ago may become indistinguishable from the code that was written by someone else, so be kind to your future self!" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:371 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:447 msgid "There are several steps in order to setup custom docs for the module:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:373 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:449 msgid "Make a new directory in the root of the module. The directory name can be anything, but we'll be using the ``doc_classes`` name throughout this section." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:376 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:452 msgid "Append the following code snippet to ``config.py``:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:388 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:464 msgid "The ``get_doc_classes()`` method is necessary for the build system to know which documentation classes of the module must be merged, since the module may contain several classes. Replace ``ClassName`` with the name of the class you want to write documentation for. If you need docs for more than one class, append those as well." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:394 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:470 msgid "The ``get_doc_path()`` method is used by the build system to determine the location of the docs. In our case, they will be located in the ``doc_classes`` directory." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:398 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:474 msgid "Run command:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:404 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:480 msgid "This will dump the engine API reference to the given ```` in XML format. Notice that you'll need to configure your ``PATH`` to locate Godot's executable, and make sure that you have write access rights. If not, you might encounter an error similar to the following:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:414 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:490 msgid "Get generated doc file from ``godot/doc/classes/ClassName.xml``" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:416 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:492 msgid "Copy this file to ``doc_classes``, optionally edit it, then compile the engine." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:418 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:494 msgid "The build system will fetch the documentation files from the ``doc_classes`` directory and merge them with the base types. Once the compilation process is finished, the docs will become accessible within the engine's built-in documentation system." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:422 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:498 msgid "In order to keep documentation up-to-date, all you'll have to do is simply modify one of the ``ClassName.xml`` files and recompile the engine from now on." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:428 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:504 msgid "Adding custom editor icons" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:430 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:506 msgid "Similarly to how you can write self-contained documentation within a module, you can also create your own custom icons for classes to appear in the editor." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:433 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:509 msgid "For the actual process of creating editor icons to be integrated within the engine, please refer to :ref:`doc_editor_icons` first." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:436 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:512 msgid "Once you've created your icon(s), proceed with the following steps:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:438 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:514 msgid "Make a new directory in the root of the module named ``icons``. This is the default path for the engine to look for module's editor icons." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:441 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:517 msgid "Move your newly created ``svg`` icons (optimized or not) into that folder." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:443 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:519 msgid "Recompile the engine and run the editor. Now the icon(s) will appear in editor's interface where appropriate." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:446 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:522 msgid "If you'd like to store your icons somewhere else within your module, add the following code snippet to ``config.py`` to override the default path:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:455 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:531 msgid "Summing up" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:457 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:533 msgid "Remember to:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:459 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:535 msgid "use ``GDCLASS`` macro for inheritance, so Godot can wrap it" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:460 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:536 msgid "use ``_bind_methods`` to bind your functions to scripting, and to allow them to work as callbacks for signals." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:463 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:539 msgid "But this is not all, depending what you do, you will be greeted with some (hopefully positive) surprises." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:466 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:542 msgid "If you inherit from :ref:`class_Node` (or any derived node type, such as Sprite), your new class will appear in the editor, in the inheritance tree in the \"Add Node\" dialog." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:469 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:545 msgid "If you inherit from :ref:`class_Resource`, it will appear in the resource list, and all the exposed properties can be serialized when saved/loaded." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:472 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:548 msgid "By this same logic, you can extend the Editor and almost any area of the engine." msgstr "" diff --git a/sphinx/templates/development/cpp/custom_resource_format_loaders.pot b/sphinx/templates/development/cpp/custom_resource_format_loaders.pot index 9c91f0e0bb..9ab92a71c2 100644 --- a/sphinx/templates/development/cpp/custom_resource_format_loaders.pot +++ b/sphinx/templates/development/cpp/custom_resource_format_loaders.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -34,8 +34,8 @@ msgstr "" #: ../../docs/development/cpp/custom_resource_format_loaders.rst:18 #: ../../docs/development/cpp/custom_resource_format_loaders.rst:39 -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:213 -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:247 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:303 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:356 msgid "References" msgstr "" @@ -44,7 +44,8 @@ msgid ":ref:`ResourceLoader`" msgstr "" #: ../../docs/development/cpp/custom_resource_format_loaders.rst:21 -msgid "`core/io/resource_loader.cpp `__" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:358 +msgid "`core/io/resource_loader.cpp `_" msgstr "" #: ../../docs/development/cpp/custom_resource_format_loaders.rst:24 @@ -80,7 +81,7 @@ msgid "ImageFormatLoader should be used to load images." msgstr "" #: ../../docs/development/cpp/custom_resource_format_loaders.rst:41 -msgid "`core/io/image_loader.h `__" +msgid "`core/io/image_loader.h `_" msgstr "" #: ../../docs/development/cpp/custom_resource_format_loaders.rst:45 @@ -99,55 +100,67 @@ msgstr "" msgid "In addition, ResourceFormatLoaders must convert file paths into resources with the ``load`` function. To load a resource, ``load`` must read and handle data serialization." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:110 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:109 +msgid "Creating a ResourceFormatSaver" +msgstr "" + +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:111 +msgid "If you'd like to be able to edit and save a resource, you can implement a ``ResourceFormatSaver``:" +msgstr "" + +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:158 msgid "Creating custom data types" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:112 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:160 msgid "Godot may not have a proper substitute within its :ref:`doc_core_types` or managed resources. Godot needs a new registered data type to understand additional binary formats such as machine learning models." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:116 -msgid "Here is an example of how to create a custom datatype" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:164 +msgid "Here is an example of creating a custom datatype:" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:174 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:262 msgid "Considerations" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:176 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:264 msgid "Some libraries may not define certain common routines such as IO handling. Therefore, Godot call translations are required." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:179 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:267 msgid "For example, here is the code for translating ``FileAccess`` calls into ``std::istream``." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:215 -msgid "`istream `__" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:305 +msgid "`istream `_" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:216 -msgid "`streambuf `__" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:306 +msgid "`streambuf `_" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:217 -msgid "`core/io/fileaccess.h `__" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:307 +msgid "`core/io/fileaccess.h `_" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:220 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:310 msgid "Registering the new file format" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:222 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:312 msgid "Godot registers ``ResourcesFormatLoader`` with a ``ResourceLoader`` handler. The handler selects the proper loader automatically when ``load`` is called." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:249 -msgid "`core/io/resource_loader.cpp `__" -msgstr "" - -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:252 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:361 msgid "Loading it on GDScript" msgstr "" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:363 +msgid "Save a file called ``demo.json`` with the following contents and place it in the project's root folder:" +msgstr "" + +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:379 +msgid "Then attach the following script to any node::" +msgstr "" + diff --git a/sphinx/templates/development/cpp/index.pot b/sphinx/templates/development/cpp/index.pot index d6f685c505..2486fdc601 100644 --- a/sphinx/templates/development/cpp/index.pot +++ b/sphinx/templates/development/cpp/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/inheritance_class_tree.pot b/sphinx/templates/development/cpp/inheritance_class_tree.pot index 73b2c393eb..122ca2dec4 100644 --- a/sphinx/templates/development/cpp/inheritance_class_tree.pot +++ b/sphinx/templates/development/cpp/inheritance_class_tree.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/introduction_to_godot_development.pot b/sphinx/templates/development/cpp/introduction_to_godot_development.pot index c9724a0328..867d70420c 100644 --- a/sphinx/templates/development/cpp/introduction_to_godot_development.pot +++ b/sphinx/templates/development/cpp/introduction_to_godot_development.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/object_class.pot b/sphinx/templates/development/cpp/object_class.pot index ee7bcc9a2a..69c2895885 100644 --- a/sphinx/templates/development/cpp/object_class.pot +++ b/sphinx/templates/development/cpp/object_class.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/variant_class.pot b/sphinx/templates/development/cpp/variant_class.pot index 34e1e664b9..77b6d95b4d 100644 --- a/sphinx/templates/development/cpp/variant_class.pot +++ b/sphinx/templates/development/cpp/variant_class.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/editor/creating_icons.pot b/sphinx/templates/development/editor/creating_icons.pot index 814f8a30f9..976034f67a 100644 --- a/sphinx/templates/development/editor/creating_icons.pot +++ b/sphinx/templates/development/editor/creating_icons.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/editor/index.pot b/sphinx/templates/development/editor/index.pot index 90c81fd31d..d86acd90a2 100644 --- a/sphinx/templates/development/editor/index.pot +++ b/sphinx/templates/development/editor/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/editor/introduction.pot b/sphinx/templates/development/editor/introduction.pot index 4d380a0bfd..e715b4788a 100644 --- a/sphinx/templates/development/editor/introduction.pot +++ b/sphinx/templates/development/editor/introduction.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/file_formats/index.pot b/sphinx/templates/development/file_formats/index.pot index ff6c6e1fbf..d399f68191 100644 --- a/sphinx/templates/development/file_formats/index.pot +++ b/sphinx/templates/development/file_formats/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/file_formats/tscn.pot b/sphinx/templates/development/file_formats/tscn.pot index 03844a2329..edabff4a27 100644 --- a/sphinx/templates/development/file_formats/tscn.pot +++ b/sphinx/templates/development/file_formats/tscn.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/editor/command_line_tutorial.pot b/sphinx/templates/getting_started/editor/command_line_tutorial.pot index 4a5900f41a..7db9ea77cb 100644 --- a/sphinx/templates/getting_started/editor/command_line_tutorial.pot +++ b/sphinx/templates/getting_started/editor/command_line_tutorial.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/editor/external_editor.pot b/sphinx/templates/getting_started/editor/external_editor.pot index 8ff42554f9..f1388d6fb3 100644 --- a/sphinx/templates/getting_started/editor/external_editor.pot +++ b/sphinx/templates/getting_started/editor/external_editor.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/editor/index.pot b/sphinx/templates/getting_started/editor/index.pot index 6ccb5e75a7..4eef35b63f 100644 --- a/sphinx/templates/getting_started/editor/index.pot +++ b/sphinx/templates/getting_started/editor/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/editor/unity_to_godot.pot b/sphinx/templates/getting_started/editor/unity_to_godot.pot index 021ac1d2f4..bcab0d52fd 100644 --- a/sphinx/templates/getting_started/editor/unity_to_godot.pot +++ b/sphinx/templates/getting_started/editor/unity_to_godot.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -57,7 +57,7 @@ msgid "OS (editor)" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:25 -msgid "Windows, macOS, Linux (unofficial and unsupported)" +msgid "Windows, macOS, Linux" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:25 diff --git a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_basics.pot b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_basics.pot index 4f21f335f6..ad90b6e978 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_basics.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_basics.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -216,67 +216,71 @@ msgstr "" msgid "`NuGet `_ packages can be installed and used with Godot, as with any C# project. Many IDEs are able to add packages directly. They can also be added manually by adding the package reference in the ``.csproj`` file located in the project root:" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:260 -msgid "Whenever packages are added or modified, run ``nuget restore`` in the root of the project directory. To ensure that NuGet packages will be available for msbuild to use, run:" +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:262 +msgid "By default, tools like NuGet put ``Version`` as an attribute of the ```PackageReference``` Node. **You must manually create a Version node as shown above.** This is because the version of MSBuild used requires this. (This will be fixed in Godot 4.0.)" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:269 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:264 +msgid "Whenever packages are added or modified, run ``nuget restore`` (*not* ``dotnet restore``) in the root of the project directory. To ensure that NuGet packages will be available for msbuild to use, run:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:273 msgid "Profiling your C# code" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:271 -msgid "`Mono log profiler `_ is available via `this PR `_." +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:275 +msgid "`Mono log profiler `_ is available for Linux and macOS. Due to a Mono change, it does not work on Windows currently." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:272 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:276 msgid "External Mono profiler like `JetBrains dotTrace `_ can be used as described `here `_." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:275 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:279 msgid "Configuring VS 2019 for debugging" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:279 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:283 msgid "Godot has built-in support for workflows involving several popular C# IDEs. Built-in support for Visual Studio will be including in future versions, but in the meantime, the steps below can let you configure VS 2019 for use with Godot C# projects." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:284 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:288 msgid "Install VS 2019 with ``.NET desktop development`` and ``Desktop development with C++`` workloads selected." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:285 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:289 msgid "**Ensure that you do not have Xamarin installed.** Do not choose the ``Mobile development with .NET`` workload. Xamarin changes the DLLs used by MonoDebugger, which breaks debugging." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:286 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:290 msgid "Install the `VSMonoDebugger extension `_." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:287 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:291 msgid "In VS 2019 --> Extensions --> Mono --> Settings:" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:289 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:293 msgid "Select ``Debug/Deploy to local Windows``." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:290 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:294 msgid "Leave ``Local Deploy Path`` blank." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:291 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:295 msgid "Set the ``Mono Debug Port`` to the port in Godot --> Project --> Project Settings --> Mono --> Debugger Agent." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:292 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:296 msgid "Also select ``Wait for Debugger`` in the Godot Mono options. `This Godot Addon `_ may be helpful." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:294 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:298 msgid "Run the game in Godot. It should hang at the Godot splash screen while it waits for your debugger to attach." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:295 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:299 msgid "In VS 2019, open your project and choose Extensions --> Mono --> Attach to Mono Debugger." msgstr "" diff --git a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_differences.pot b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_differences.pot index a535b47d1f..efad32077b 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_differences.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_differences.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_features.pot b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_features.pot index d1a774be37..40d5fcb93e 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_features.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_features.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -120,3 +120,63 @@ msgstr "" msgid "Finally, signals can be created by calling ``AddUserSignal``, but be aware that it should be executed before any use of said signals (with ``Connect`` or ``EmitSignal``)." msgstr "" +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:174 +msgid "Preprocessor defines" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:176 +msgid "Godot has a set of defines that allow you to change your C# code depending on the environment you are compiling to." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:179 +msgid "If you created your project before Godot 3.2, you have to modify or regenerate your `csproj` file to use this feature (compare ```` with a new 3.2+ project)." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:184 +msgid "Examples" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:186 +msgid "For example, you can change code based on the platform:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:203 +msgid "Or you can detect which engine your code is in, useful for making cross-engine libraries:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:219 +msgid "Full list of defines" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:221 +msgid "``GODOT`` is always defined for Godot projects." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:223 +msgid "One of ``GODOT_64`` or ``GODOT_32`` is defined depending on if the architecture is 64-bit or 32-bit." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:225 +msgid "One of ``GODOT_X11``, ``GODOT_WINDOWS``, ``GODOT_OSX``, ``GODOT_ANDROID``, ``GODOT_HTML5``, or ``GODOT_SERVER`` depending on the OS. These names may change in the future. These are created from the ``get_name()`` method of the :ref:``OS `` singleton, but not every possible OS the method returns is an OS that Godot with Mono runs on." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:230 +msgid "When **exporting**, the following may also be defined depending on the export features:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:232 +msgid "One of ``GODOT_PC``, ``GODOT_MOBILE``, or ``GODOT_WEB`` depending on the platform type." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:234 +msgid "One of ``GODOT_ARM64_V8A`` or ``GODOT_ARMEABI_V7A`` on Android only depending on the architecture." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:236 +msgid "One of ``GODOT_S3TC``, ``GODOT_ETC``, or ``GODOT_ETC2`` depending on the texture compression type." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:238 +msgid "Any custom features added in the export menu will be capitalized and prefixed: ``foo`` -> ``GODOT_FOO``." +msgstr "" + diff --git a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_style_guide.pot b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_style_guide.pot index ebefd6ae4b..c9b672a82f 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_style_guide.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_style_guide.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/c_sharp/index.pot b/sphinx/templates/getting_started/scripting/c_sharp/index.pot index f9423d7dd3..9c4fc7d382 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/index.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/cross_language_scripting.pot b/sphinx/templates/getting_started/scripting/cross_language_scripting.pot index 2d0d69b642..d343d31e1e 100644 --- a/sphinx/templates/getting_started/scripting/cross_language_scripting.pot +++ b/sphinx/templates/getting_started/scripting/cross_language_scripting.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_advanced.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_advanced.pot index f6e28e7ffe..24cda7aa56 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_advanced.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_advanced.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -198,11 +198,11 @@ msgstr "" msgid "Dictionaries can also be used as data markup or quick structures. While GDScript's dictionaries resemble python dictionaries, it also supports Lua style syntax and indexing, which makes it useful for writing initial states and quick structs:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:318 +#: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:319 msgid "For & while" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:320 +#: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:321 msgid "Iterating in some statically typed languages can be quite complex:" msgstr "" diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_basics.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_basics.pot index 3678250b97..fec8108e8b 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_basics.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_basics.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -72,1458 +72,1462 @@ msgstr "" msgid "Some people can learn better by taking a look at the syntax, so here's a simple example of how GDScript looks." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:129 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:134 msgid "If you have previous experience with statically typed languages such as C, C++, or C# but never used a dynamically typed one before, it is advised you read this tutorial: :ref:`doc_gdscript_more_efficiently`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:134 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:139 msgid "Language" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:136 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:141 msgid "In the following, an overview is given to GDScript. Details, such as which methods are available to arrays or other objects, should be looked up in the linked class descriptions." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:141 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:146 msgid "Identifiers" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:143 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:148 msgid "Any string that restricts itself to alphabetic characters (``a`` to ``z`` and ``A`` to ``Z``), digits (``0`` to ``9``) and ``_`` qualifies as an identifier. Additionally, identifiers must not begin with a digit. Identifiers are case-sensitive (``foo`` is different from ``FOO``)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:149 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:154 msgid "Keywords" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:151 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:156 msgid "The following is the list of keywords supported by the language. Since keywords are reserved words (tokens), they can't be used as identifiers. Operators (like ``in``, ``not``, ``and`` or ``or``) and names of built-in types as listed in the following sections are also reserved." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:156 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:161 msgid "Keywords are defined in the `GDScript tokenizer `_ in case you want to take a look under the hood." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:160 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:165 msgid "Keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:160 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:165 msgid "Description" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:162 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:167 msgid "if" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:162 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:164 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:166 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:167 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:169 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:171 msgid "See `if/else/elif`_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:164 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:169 msgid "elif" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:166 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:171 msgid "else" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:168 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:804 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:173 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:809 msgid "for" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:168 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:173 msgid "See for_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:170 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:793 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:175 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:798 msgid "while" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:170 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:175 msgid "See while_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:172 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:839 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:177 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:844 msgid "match" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:172 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:177 msgid "See match_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:174 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:179 msgid "break" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:174 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:179 msgid "Exits the execution of the current ``for`` or ``while`` loop." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:176 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:181 msgid "continue" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:176 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:181 msgid "Immediately skips to the next iteration of the ``for`` or ``while`` loop." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:178 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:183 msgid "pass" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:178 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:183 msgid "Used where a statement is required syntactically but execution of code is undesired, e.g. in empty functions." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:180 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:185 msgid "return" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:180 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:185 msgid "Returns a value from a function." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:182 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:187 msgid "class" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:182 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:187 msgid "Defines a class." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:184 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:189 msgid "extends" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:184 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:189 msgid "Defines what class to extend with the current class." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:186 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:191 msgid "is" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:186 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:191 msgid "Tests whether a variable extends a given class, or is of a given built-in type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:188 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:193 msgid "as" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:188 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:193 msgid "Cast the value to a given type if possible." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:190 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:195 msgid "self" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:190 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:195 msgid "Refers to current class instance." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:192 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:197 msgid "tool" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:192 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:197 msgid "Executes the script in the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:194 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:199 msgid "signal" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:194 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:199 msgid "Defines a signal." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:196 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:201 msgid "func" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:196 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:201 msgid "Defines a function." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:198 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:203 msgid "static" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:198 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:203 msgid "Defines a static function. Static member variables are not allowed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:200 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:205 msgid "const" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:200 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:205 msgid "Defines a constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:202 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:207 msgid "enum" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:202 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:207 msgid "Defines an enum." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:204 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:209 msgid "var" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:204 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:209 msgid "Defines a variable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:206 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:211 msgid "onready" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:206 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:211 msgid "Initializes a variable once the Node the script is attached to and its children are part of the scene tree." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:208 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:213 msgid "export" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:208 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:213 msgid "Saves a variable along with the resource it's attached to and makes it visible and modifiable in the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:210 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:215 msgid "setget" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:210 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:215 msgid "Defines setter and getter functions for a variable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:212 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:217 msgid "breakpoint" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:212 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:217 msgid "Editor helper for debugger breakpoints." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:214 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:219 msgid "preload" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:214 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:219 msgid "Preloads a class or variable. See `Classes as resources`_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:216 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:221 msgid "yield" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:216 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:221 msgid "Coroutine support. See `Coroutines with yield`_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:218 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:223 msgid "assert" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:218 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:223 msgid "Asserts a condition, logs error on failure. Ignored in non-debug builds. See `Assert keyword`_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:220 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:225 msgid "remote" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:220 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:222 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:224 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:226 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:228 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:225 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:227 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:229 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:231 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:233 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:235 msgid "Networking RPC annotation. See :ref:`high-level multiplayer docs `." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:222 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:227 msgid "master" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:224 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:229 msgid "puppet" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:226 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:231 msgid "remotesync" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:228 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:233 msgid "mastersync" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:235 msgid "puppetsync" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:232 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:237 msgid "PI" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:232 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:237 msgid "PI constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:234 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:239 msgid "TAU" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:234 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:239 msgid "TAU constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:236 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:241 msgid "INF" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:236 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:241 msgid "Infinity constant. Used for comparisons." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:238 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:243 msgid "NAN" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:238 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:243 msgid "NAN (not a number) constant. Used for comparisons." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:242 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:247 msgid "Operators" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:244 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:249 msgid "The following is the list of supported operators and their precedence." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:247 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:252 msgid "**Operator**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:247 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:252 msgid "**Description**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:249 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 msgid "``x[index]``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:249 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 msgid "Subscription (highest priority)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:251 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 msgid "``x.attribute``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:251 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 msgid "Attribute reference" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:253 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 msgid "``foo()``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:253 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 msgid "Function call" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:255 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 msgid "``is``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:255 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 msgid "Instance type checker" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:257 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 msgid "``~``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:257 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 msgid "Bitwise NOT" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:259 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 msgid "``-x``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:259 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 msgid "Negative / Unary negation" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:261 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 msgid "``*`` ``/`` ``%``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:261 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 msgid "Multiplication / Division / Remainder" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:263 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 msgid "These operators have the same behavior as C++. Integer division is truncated rather than returning a fractional number, and the % operator is only available for ints (\"fmod\" for floats)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:269 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 msgid "``+``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:269 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 msgid "Addition / Concatenation of arrays" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:271 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 msgid "``-``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:271 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 msgid "Subtraction" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:273 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 msgid "``<<`` ``>>``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:273 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 msgid "Bit shifting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:275 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:280 msgid "``&``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:275 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:280 msgid "Bitwise AND" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:277 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:282 msgid "``^``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:277 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:282 msgid "Bitwise XOR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:279 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:284 msgid "``|``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:279 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:284 msgid "Bitwise OR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:281 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:286 msgid "``<`` ``>`` ``==`` ``!=`` ``>=`` ``<=``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:281 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:286 msgid "Comparisons" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:283 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:288 msgid "``in``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:283 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:288 msgid "Content test" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:290 msgid "``!`` ``not``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:290 msgid "Boolean NOT" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:292 msgid "``and`` ``&&``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:292 msgid "Boolean AND" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:294 msgid "``or`` ``||``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:294 msgid "Boolean OR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:296 msgid "``if x else``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:296 msgid "Ternary if/else" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:298 msgid "``=`` ``+=`` ``-=`` ``*=`` ``/=`` ``%=`` ``&=`` ``|=``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:298 msgid "Assignment (lowest priority)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:302 msgid "Literals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:300 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:305 msgid "**Literal**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:300 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:305 msgid "**Type**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:302 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:307 msgid "``45``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:302 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:307 msgid "Base 10 integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:304 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:309 msgid "``0x8F51``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:304 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:309 msgid "Base 16 (hexadecimal) integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:306 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:311 msgid "``0b101010``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:306 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:311 msgid "Base 2 (binary) integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:308 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:313 msgid "``3.14``, ``58.1e-10``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:308 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:313 msgid "Floating-point number (real)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:310 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:315 msgid "``\"Hello\"``, ``\"Hi\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:310 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:315 msgid "Strings" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:312 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:317 msgid "``\"\"\"Hello\"\"\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:312 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:317 msgid "Multiline string" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:314 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:319 msgid "``@\"Node/Label\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:314 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:319 msgid ":ref:`class_NodePath` or StringName" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:316 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:321 msgid "``$NodePath``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:316 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:321 msgid "Shorthand for ``get_node(\"NodePath\")``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:320 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:325 msgid "Comments" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:322 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:327 msgid "Anything from a ``#`` to the end of the line is ignored and is considered a comment." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:332 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:337 msgid "Built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:334 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:339 msgid "Built-in types are stack-allocated. They are passed as values. This means a copy is created on each assignment or when passing them as arguments to functions. The only exceptions are ``Array``\\ s and ``Dictionaries``, which are passed by reference so they are shared. (Pooled arrays such as ``PoolByteArray`` are still passed as values.)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:341 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:346 msgid "Basic built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:343 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:348 msgid "A variable in GDScript can be assigned to several built-in types." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:346 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:351 msgid "null" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:348 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:353 msgid "``null`` is an empty data type that contains no information and can not be assigned any other value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:352 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:357 msgid ":ref:`bool `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:354 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:359 msgid "Short for \"boolean\", it can only contain ``true`` or ``false``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:357 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:362 msgid ":ref:`int `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:359 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:364 msgid "Short for \"integer\", it stores whole numbers (positive and negative). It is stored as a 64-bit value, equivalent to \"int64_t\" in C++." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:363 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:368 msgid ":ref:`float `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:365 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:370 msgid "Stores real numbers, including decimals, using floating-point values. It is stored as a 64-bit value, equivalent to \"double\" in C++. Note: Currently, data structures such as Vector2, Vector3, and PoolRealArray store 32-bit single-precision \"float\" values." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:371 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 msgid ":ref:`String `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:373 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 msgid "A sequence of characters in `Unicode format `_. Strings can contain `standard C escape sequences `_. GDScript also supports :ref:`doc_gdscript_printf`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:379 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 msgid "Vector built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:382 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:387 msgid ":ref:`Vector2 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:389 msgid "2D vector type containing ``x`` and ``y`` fields. Can also be accessed as an array." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:393 msgid ":ref:`Rect2 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:395 msgid "2D Rectangle type containing two vectors fields: ``position`` and ``size``. Also contains an ``end`` field which is ``position + size``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:394 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:399 msgid ":ref:`Vector3 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:396 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:401 msgid "3D vector type containing ``x``, ``y`` and ``z`` fields. This can also be accessed as an array." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:400 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:405 msgid ":ref:`Transform2D `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:407 msgid "3×2 matrix used for 2D transforms." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:405 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:410 msgid ":ref:`Plane `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:407 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:412 msgid "3D Plane type in normalized form that contains a ``normal`` vector field and a ``d`` scalar distance." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:411 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:416 msgid ":ref:`Quat `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:413 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:418 msgid "Quaternion is a datatype used for representing a 3D rotation. It's useful for interpolating rotations." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:417 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:422 msgid ":ref:`AABB `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:419 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:424 msgid "Axis-aligned bounding box (or 3D box) contains 2 vectors fields: ``position`` and ``size``. Also contains an ``end`` field which is ``position + size``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:424 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:429 msgid ":ref:`Basis `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:426 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:431 msgid "3x3 matrix used for 3D rotation and scale. It contains 3 vector fields (``x``, ``y`` and ``z``) and can also be accessed as an array of 3D vectors." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:431 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:436 msgid ":ref:`Transform `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:433 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:438 msgid "3D Transform contains a Basis field ``basis`` and a Vector3 field ``origin``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:437 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:442 msgid "Engine built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:440 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:445 msgid ":ref:`Color `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:442 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:447 msgid "Color data type contains ``r``, ``g``, ``b``, and ``a`` fields. It can also be accessed as ``h``, ``s``, and ``v`` for hue/saturation/value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:446 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:451 msgid ":ref:`NodePath `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:448 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:453 msgid "Compiled path to a node used mainly in the scene system. It can be easily assigned to, and from, a String." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:452 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:457 msgid ":ref:`RID `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:454 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:459 msgid "Resource ID (RID). Servers use generic RIDs to reference opaque data." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:457 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:462 msgid ":ref:`Object `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:459 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:464 msgid "Base class for anything that is not a built-in type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:462 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:467 msgid "Container built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:465 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:470 msgid ":ref:`Array `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:467 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:472 msgid "Generic sequence of arbitrary object types, including other arrays or dictionaries (see below). The array can resize dynamically. Arrays are indexed starting from index ``0``. Negative indices count from the end." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:481 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:486 msgid "GDScript arrays are allocated linearly in memory for speed. Large arrays (more than tens of thousands of elements) may however cause memory fragmentation. If this is a concern, special types of arrays are available. These only accept a single data type. They avoid memory fragmentation and use less memory, but are atomic and tend to run slower than generic arrays. They are therefore only recommended to use for large data sets:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:488 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:493 msgid ":ref:`PoolByteArray `: An array of bytes (integers from 0 to 255)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:489 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:494 msgid ":ref:`PoolIntArray `: An array of integers." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:490 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:495 msgid ":ref:`PoolRealArray `: An array of floats." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:491 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:496 msgid ":ref:`PoolStringArray `: An array of strings." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:492 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:497 msgid ":ref:`PoolVector2Array `: An array of :ref:`Vector2 ` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:493 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:498 msgid ":ref:`PoolVector3Array `: An array of :ref:`Vector3 ` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:494 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:499 msgid ":ref:`PoolColorArray `: An array of :ref:`Color ` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:497 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:502 msgid ":ref:`Dictionary `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:499 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:504 msgid "Associative container which contains values referenced by unique keys." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:512 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:517 msgid "Lua-style table syntax is also supported. Lua-style uses ``=`` instead of ``:`` and doesn't use quotes to mark string keys (making for slightly less to write). Note however that like any GDScript identifier, keys written in this form cannot start with a digit." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:526 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:531 msgid "To add a key to an existing dictionary, access it like an existing key and assign to it::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:535 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:540 msgid "Data" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:538 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:543 msgid "Variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:540 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:545 msgid "Variables can exist as class members or local to functions. They are created with the ``var`` keyword and may, optionally, be assigned a value upon initialization." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:551 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:556 msgid "Variables can optionally have a type specification. When a type is specified, the variable will be forced to have always that same type, and trying to assign an incompatible value will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:555 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:560 msgid "Types are specified in the variable declaration using a ``:`` (colon) symbol after the variable name, followed by the type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:563 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:568 msgid "If the variable is initialized within the declaration, the type can be inferred, so it's possible to omit the type name::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:569 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:574 msgid "Type inference is only possible if the assigned value has a defined type, otherwise it will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:572 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:577 msgid "Valid types are:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:574 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:579 msgid "Built-in types (Array, Vector2, int, String, etc.)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:575 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:580 msgid "Engine classes (Node, Resource, Reference, etc.)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:576 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:581 msgid "Constant names if they contain a script resource (``MyScript`` if you declared ``const MyScript = preload(\"res://my_script.gd\")``)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:577 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:582 msgid "Other classes in the same script, respecting scope (``InnerClass.NestedClass`` if you declared ``class NestedClass`` inside the ``class InnerClass`` in the same scope)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:578 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:583 msgid "Script classes declared with the ``class_name`` keyword." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:581 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:586 msgid "Casting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:583 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:588 msgid "Values assigned to typed variables must have a compatible type. If it's needed to coerce a value to be of a certain type, in particular for object types, you can use the casting operator ``as``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:587 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:592 msgid "Casting between object types results in the same object if the value is of the same type or a subtype of the cast type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:595 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:600 msgid "If the value is not a subtype, the casting operation will result in a ``null`` value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:602 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:607 msgid "For built-in types, they will be forcibly converted if possible, otherwise the engine will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:611 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:616 msgid "Casting is also useful to have better type-safe variables when interacting with the scene tree::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:621 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:626 msgid "Constants" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:623 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:628 msgid "Constants are similar to variables, but must be constants or constant expressions and must be assigned on initialization." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:637 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:642 msgid "Although the type of constants is inferred from the assigned value, it's also possible to add explicit type specification::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:643 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:648 msgid "Assigning a value of an incompatible type will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:646 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:651 msgid "Enums" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:648 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:653 msgid "Enums are basically a shorthand for constants, and are pretty useful if you want to assign consecutive integers to some constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:651 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:656 msgid "If you pass a name to the enum, it will put all the keys inside a constant dictionary of that name." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:654 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:659 msgid "In Godot 3.1 and later, keys in a named enum are not registered as global constants. They should be accessed prefixed by the enum's name (``Name.KEY``); see an example below." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:674 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:679 msgid "Functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:676 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:681 msgid "Functions always belong to a `class `_. The scope priority for variable look-up is: local → class member → global. The ``self`` variable is always available and is provided as an option for accessing class members, but is not always required (and should *not* be sent as the function's first argument, unlike Python)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:689 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:694 msgid "A function can ``return`` at any point. The default return value is ``null``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:691 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:696 msgid "Functions can also have type specification for the arguments and for the return value. Types for arguments can be added in a similar way to variables::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:697 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:702 msgid "If a function argument has a default value, it's possible to infer the type::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:702 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:707 msgid "The return type of the function can be specified after the arguments list using the arrow token (``->``)::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:708 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:713 msgid "Functions that have a return type **must** return a proper value. Setting the type as ``void`` means the function doesn't return anything. Void functions can return early with the ``return`` keyword, but they can't return any value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:717 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:722 msgid "Non-void functions must **always** return a value, so if your code has branching statements (such as an ``if``/``else`` construct), all the possible paths must have a return. E.g., if you have a ``return`` inside an ``if`` block but not after it, the editor will raise an error because if the block is not executed, the function won't have a valid value to return." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:725 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:730 msgid "Referencing functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:727 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:732 msgid "Contrary to Python, functions are *not* first-class objects in GDScript. This means they cannot be stored in variables, passed as an argument to another function or be returned from other functions. This is for performance reasons." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:731 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:736 msgid "To reference a function by name at run-time, (e.g. to store it in a variable, or pass it to another function as an argument) one must use the ``call`` or ``funcref`` helpers::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:745 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:750 msgid "Static functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:747 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:752 msgid "A function can be declared static. When a function is static, it has no access to the instance member variables or ``self``. This is mainly useful to make libraries of helper functions::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:756 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:761 msgid "Statements and control flow" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:758 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:763 msgid "Statements are standard and can be assignments, function calls, control flow structures, etc (see below). ``;`` as a statement separator is entirely optional." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:763 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:768 msgid "if/else/elif" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:765 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:770 msgid "Simple conditions are created by using the ``if``/``else``/``elif`` syntax. Parenthesis around conditions are allowed, but not required. Given the nature of the tab-based indentation, ``elif`` can be used instead of ``else``/``if`` to maintain a level of indentation." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:779 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:784 msgid "Short statements can be written on the same line as the condition::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:786 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:791 msgid "Sometimes, you might want to assign a different initial value based on a boolean expression. In this case, ternary-if expressions come in handy::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:795 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:800 msgid "Simple loops are created by using ``while`` syntax. Loops can be broken using ``break`` or continued using ``continue``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:806 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:811 msgid "To iterate through a range, such as an array or table, a *for* loop is used. When iterating over an array, the current array element is stored in the loop variable. When iterating over a dictionary, the *index* is stored in the loop variable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:841 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:846 msgid "A ``match`` statement is used to branch execution of a program. It's the equivalent of the ``switch`` statement found in many other languages, but offers some additional features." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:844 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:849 msgid "Basic syntax::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:855 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:860 msgid "**Crash-course for people who are familiar with switch statements**:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:857 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:862 msgid "Replace ``switch`` with ``match``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:858 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:863 msgid "Remove ``case``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:859 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:864 msgid "Remove any ``break``\\ s. If you don't want to ``break`` by default, you can use ``continue`` for a fallthrough." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:860 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:865 msgid "Change ``default`` to a single underscore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:863 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:868 msgid "**Control flow**:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:865 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:870 msgid "The patterns are matched from top to bottom. If a pattern matches, the corresponding block will be executed. After that, the execution continues below the ``match`` statement. If you want to have a fallthrough, you can use ``continue`` to stop execution in the current block and check the ones below it." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:869 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:874 msgid "There are 6 pattern types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:881 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:886 msgid "Constant pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:872 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:877 msgid "Constant primitives, like numbers and strings::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:893 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:898 msgid "Variable pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:884 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:889 msgid "Matches the contents of a variable/enum::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:907 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:912 msgid "Wildcard pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:896 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:901 msgid "This pattern matches everything. It's written as a single underscore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:898 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:903 msgid "It can be used as the equivalent of the ``default`` in a ``switch`` statement in other languages::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:920 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:925 msgid "Binding pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:910 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:915 msgid "A binding pattern introduces a new variable. Like the wildcard pattern, it matches everything - and also gives that value a name. It's especially useful in array and dictionary patterns::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:941 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:946 msgid "Array pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:923 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:928 msgid "Matches an array. Every single element of the array pattern is a pattern itself, so you can nest them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:925 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:930 msgid "The length of the array is tested first, it has to be the same size as the pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:927 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:932 msgid "**Open-ended array**: An array can be bigger than the pattern by making the last subpattern ``..``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:929 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:934 msgid "Every subpattern has to be comma-separated." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:968 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:973 msgid "Dictionary pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:944 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:949 msgid "Works in the same way as the array pattern. Every key has to be a constant pattern." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:946 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:951 msgid "The size of the dictionary is tested first, it has to be the same size as the pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:948 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:953 msgid "**Open-ended dictionary**: A dictionary can be bigger than the pattern by making the last subpattern ``..``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:950 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:955 msgid "Every subpattern has to be comma separated." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:952 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:957 msgid "If you don't specify a value, then only the existence of the key is checked." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:954 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:959 msgid "A value pattern is separated from the key pattern with a ``:``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:981 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:986 msgid "Multiple patterns" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:971 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:976 msgid "You can also specify multiple patterns separated by a comma. These patterns aren't allowed to have any bindings in them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:984 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:989 msgid "Classes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:986 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:991 msgid "By default, all script files are unnamed classes. In this case, you can only reference them using the file's path, using either a relative or an absolute path. For example, if you name a script file ``character.gd``::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:999 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1004 msgid "Instead, you can give your class a name to register it as a new type in Godot's editor. For that, you use the ``class_name`` keyword. You can add an optional comma followed by a path to an image, to use it as an icon. Your class will then appear with its new icon in the editor::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1012 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1017 msgid "Here's a class file example:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1031 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1036 msgid "Godot's class syntax is compact: it can only contain member variables or functions. You can use static functions, but not static member variables. In the same way, the engine initializes variables every time you create an instance, and this includes arrays and dictionaries. This is in the spirit of thread safety, since scripts can be initialized in separate threads without the user knowing." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1039 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1044 msgid "Inheritance" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1041 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1046 msgid "A class (stored as a file) can inherit from:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1043 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1048 msgid "A global class." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1044 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1049 msgid "Another class file." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1045 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1050 msgid "An inner class inside another class file." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1047 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1052 msgid "Multiple inheritance is not allowed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1049 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1054 msgid "Inheritance uses the ``extends`` keyword::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1061 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1066 msgid "To check if a given instance inherits from a given class, the ``is`` keyword can be used::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1073 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1078 msgid "To call a function in a *parent class* (i.e. one ``extend``-ed in your current class), prepend ``.`` to the function name::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1078 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1083 msgid "This is especially useful because functions in extending classes replace functions with the same name in their parent classes. If you still want to call them, you can prefix them with ``.`` (like the ``super`` keyword in other languages)::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1086 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1091 msgid "Default functions like ``_init``, and most notifications such as ``_enter_tree``, ``_exit_tree``, ``_process``, ``_physics_process``, etc. are called in all parent classes automatically. There is no need to call them explicitly when overloading them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1093 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1098 msgid "Class Constructor" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1095 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1100 msgid "The class constructor, called on class instantiation, is named ``_init``. As mentioned earlier, the constructors of parent classes are called automatically when inheriting a class. So, there is usually no need to call ``._init()`` explicitly." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1100 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1105 msgid "Unlike the call of a regular function, like in the above example with ``.some_func``, if the constructor from the inherited class takes arguments, they are passed like this::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1107 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1112 msgid "This is better explained through examples. Consider this scenario::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1127 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1132 msgid "There are a few things to keep in mind here:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1129 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1134 msgid "If the inherited class (``State.gd``) defines a ``_init`` constructor that takes arguments (``e`` in this case), then the inheriting class (``Idle.gd``) *must* define ``_init`` as well and pass appropriate parameters to ``_init`` from ``State.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1132 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1137 msgid "``Idle.gd`` can have a different number of arguments than the parent class ``State.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1133 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1138 msgid "In the example above, ``e`` passed to the ``State.gd`` constructor is the same ``e`` passed in to ``Idle.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1135 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1140 msgid "If ``Idle.gd``'s ``_init`` constructor takes 0 arguments, it still needs to pass some value to the ``State.gd`` parent class, even if it does nothing. This brings us to the fact that you can pass literals in the base constructor as well, not just variables. eg.::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1145 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1150 msgid "Inner classes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1147 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1152 msgid "A class file can contain inner classes. Inner classes are defined using the ``class`` keyword. They are instanced using the ``ClassName.new()`` function." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1169 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1174 msgid "Classes as resources" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1171 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1176 msgid "Classes stored as files are treated as :ref:`resources `. They must be loaded from disk to access them in other classes. This is done using either the ``load`` or ``preload`` functions (see below). Instancing of a loaded class resource is done by calling the ``new`` function on the class object::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1187 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1192 msgid "Exports" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1191 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1196 msgid "Documentation about exports has been moved to :ref:`doc_gdscript_exports`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1194 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1199 msgid "Setters/getters" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1196 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1201 msgid "It is often useful to know when a class' member variable changes for whatever reason. It may also be desired to encapsulate its access in some way." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1199 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1204 msgid "For this, GDScript provides a *setter/getter* syntax using the ``setget`` keyword. It is used directly after a variable definition:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1206 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1211 msgid "Whenever the value of ``variable`` is modified by an *external* source (i.e. not from local usage in the class), the *setter* function (``setterfunc`` above) will be called. This happens *before* the value is changed. The *setter* must decide what to do with the new value. Vice versa, when ``variable`` is accessed, the *getter* function (``getterfunc`` above) must ``return`` the desired value. Below is an example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1220 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1225 msgid "Either of the *setter* or *getter* functions can be omitted::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1227 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1232 msgid "Setters and getters are useful when :ref:`exporting variables ` to the editor in tool scripts or plugins, for validating input." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1235 msgid "As said, *local* access will *not* trigger the setter and getter. Here is an illustration of this:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1247 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1252 msgid "Tool mode" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1249 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1254 msgid "By default, scripts don't run inside the editor and only the exported properties can be changed. In some cases, it is desired that they do run inside the editor (as long as they don't execute game code or manually avoid doing so). For this, the ``tool`` keyword exists and must be placed at the top of the file::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1262 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1267 msgid "See :ref:`doc_running_code_in_the_editor` for more information." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1264 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1269 msgid "Be cautious when freeing nodes with ``queue_free()`` or ``free()`` in a tool script (especially the script's owner itself). As tool scripts run their code in the editor, misusing them may lead to crashing the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1270 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1275 msgid "Memory management" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1272 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1277 msgid "If a class inherits from :ref:`class_Reference`, then instances will be freed when no longer in use. No garbage collector exists, just reference counting. By default, all classes that don't define inheritance extend **Reference**. If this is not desired, then a class must inherit :ref:`class_Object` manually and must call instance.free(). To avoid reference cycles that can't be freed, a ``weakref`` function is provided for creating weak references." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1280 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1285 msgid "Alternatively, when not using references, the ``is_instance_valid(instance)`` can be used to check if an object has been freed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1292 msgid "Signals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1294 msgid "Signals are a tool to emit messages from an object that other objects can react to. To create custom signals for a class, use the ``signal`` keyword." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1301 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1306 msgid "Signals are a `Callback `_ mechanism. They also fill the role of Observers, a common programming pattern. For more information, read the `Observer tutorial `_ in the Game Programming Patterns ebook." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1308 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1313 msgid "You can connect these signals to methods the same way you connect built-in signals of nodes like :ref:`class_Button` or :ref:`class_RigidBody`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1311 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1316 msgid "In the example below, we connect the ``health_depleted`` signal from a ``Character`` node to a ``Game`` node. When the ``Character`` node emits the signal, the game node's ``_on_Character_health_depleted`` is called::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1324 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1329 msgid "You can emit as many arguments as you want along with a signal." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1326 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1331 msgid "Here is an example where this is useful. Let's say we want a life bar on screen to react to health changes with an animation, but we want to keep the user interface separate from the player in our scene tree." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1330 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1335 msgid "In our ``Character.gd`` script, we define a ``health_changed`` signal and emit it with :ref:`Object.emit_signal() `, and from a ``Game`` node higher up our scene tree, we connect it to the ``Lifebar`` using the :ref:`Object.connect() ` method::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1370 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1375 msgid "To use signals, your class has to extend the ``Object`` class or any type extending it like ``Node``, ``KinematicBody``, ``Control``..." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1373 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1378 msgid "In the ``Game`` node, we get both the ``Character`` and ``Lifebar`` nodes, then connect the character, that emits the signal, to the receiver, the ``Lifebar`` node in this case." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1387 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1392 msgid "This allows the ``Lifebar`` to react to health changes without coupling it to the ``Character`` node." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1390 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1395 msgid "You can write optional argument names in parentheses after the signal's definition::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1396 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1401 msgid "These arguments show up in the editor's node dock, and Godot can use them to generate callback functions for you. However, you can still emit any number of arguments when you emit signals; it's up to you to emit the correct values." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1407 msgid "GDScript can bind an array of values to connections between a signal and a method. When the signal is emitted, the callback method receives the bound values. These bound arguments are unique to each connection, and the values will stay the same." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1407 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1412 msgid "You can use this array of values to add extra constant information to the connection if the emitted signal itself doesn't give you access to all the data that you need." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1411 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1416 msgid "Building on the example above, let's say we want to display a log of the damage taken by each character on the screen, like ``Player1 took 22 damage.``. The ``health_changed`` signal doesn't give us the name of the character that took damage. So when we connect the signal to the in-game console, we can add the character's name in the binds array argument::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1425 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1430 msgid "Our ``BattleLog`` node receives each element in the binds array as an extra argument::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1437 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1443 msgid "Coroutines with yield" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1439 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1445 msgid "GDScript offers support for `coroutines `_ via the :ref:`yield` built-in function. Calling ``yield()`` will immediately return from the current function, with the current frozen state of the same function as the return value. Calling ``resume()`` on this resulting object will continue execution and return whatever the function returns. Once resumed, the state object becomes invalid. Here is an example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1459 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1479 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1465 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1485 msgid "Will print::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1465 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1471 msgid "It is also possible to pass values between ``yield()`` and ``resume()``, for example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1486 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1491 +msgid "Remember to save the new function state, when using multiple ``yield``\\s::" +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1505 msgid "Coroutines & signals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1488 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1507 msgid "The real strength of using ``yield`` is when combined with signals. ``yield`` can accept two arguments, an object and a signal. When the signal is received, execution will recommence. Here are some examples::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1501 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1520 msgid "Coroutines themselves use the ``completed`` signal when they transition into an invalid state, for example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1512 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1531 msgid "``my_func`` will only continue execution once both buttons have been pressed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1515 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1534 msgid "Onready keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1517 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1536 msgid "When using nodes, it's common to desire to keep references to parts of the scene in a variable. As scenes are only warranted to be configured when entering the active scene tree, the sub-nodes can only be obtained when a call to ``Node._ready()`` is made." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1529 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1548 msgid "This can get a little cumbersome, especially when nodes and external references pile up. For this, GDScript has the ``onready`` keyword, that defers initialization of a member variable until ``_ready()`` is called. It can replace the above code with a single line::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1537 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1556 msgid "Assert keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1539 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1558 msgid "The ``assert`` keyword can be used to check conditions in debug builds. These assertions are ignored in non-debug builds. This means that the expression passed as argument won't be evaluated in a project exported in release mode. Due to this, assertions must **not** contain expressions that have side effects. Otherwise, the behavior of the script would vary depending on whether the project is run in a debug build." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1551 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1570 msgid "When running a project from the editor, the project will be paused if an assertion error occurs." msgstr "" diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_exports.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_exports.pot index 7f46d6351f..5f1963d6e2 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_exports.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_exports.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_format_string.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_format_string.pot index ac7aa036df..27929b8470 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_format_string.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_format_string.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_styleguide.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_styleguide.pot index 00c5d590ef..3ca6f75559 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_styleguide.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_styleguide.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -197,7 +197,7 @@ msgid "Regular comments should start with a space, but not code that you comment msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:363 -msgid "In the script editor, to toggle the selected code commented, press Ctrl K. This feature adds a single # sign at the start of the selected lines." +msgid "In the script editor, to toggle the selected code commented, press :kbd:`Ctrl + K`. This feature adds a single # sign at the start of the selected lines." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:368 diff --git a/sphinx/templates/getting_started/scripting/gdscript/index.pot b/sphinx/templates/getting_started/scripting/gdscript/index.pot index d778b08b02..4d9097848e 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/index.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/gdscript/static_typing.pot b/sphinx/templates/getting_started/scripting/gdscript/static_typing.pot index 1f290be4a3..6725c9e8a7 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/static_typing.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/static_typing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -56,247 +56,247 @@ msgstr "" msgid "Imagine you’re programming an inventory system. You code an ``Item`` node, then an ``Inventory``. To add items to the inventory, the people who work with your code should always pass an ``Item`` to the ``Inventory.add`` method. With types, you can enforce this:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:48 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:49 msgid "Another significant advantage of typed GDScript is the new **warning system**. From version 3.1, Godot gives you warnings about your code as you write it: the engine identifies sections of your code that may lead to issues at runtime, but lets you decide whether or not you want to leave the code as it is. More on that in a moment." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:54 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:55 msgid "Static types also give you better code completion options. Below, you can see the difference between a dynamic and a static typed completion options for a class called ``PlayerController``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:58 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:59 msgid "You’ve probably stored a node in a variable before, and typed a dot to be left with no autocomplete suggestions:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:64 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:65 msgid "This is due to dynamic code. Godot cannot know what node or value type you’re passing to the function. If you write the type explicitly however, you will get all public methods and variables from the node:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:71 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:72 msgid "In the future, typed GDScript will also increase code performance: Just-In-Time compilation and other compiler improvements are already on the roadmap!" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:75 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:76 msgid "Overall, typed programming gives you a more structured experience. It helps prevent errors and improves the self-documenting aspect of your scripts. This is especially helpful when you’re working in a team or on a long-term project: studies have shown that developers spend most of their time reading other people’s code, or scripts they wrote in the past and forgot about. The clearer and the more structured the code, the faster it is to understand, the faster you can move forward." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:84 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:85 msgid "How to use static typing" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:86 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:87 msgid "To define the type of a variable or a constant, write a colon after the variable’s name, followed by its type. E.g. ``var health: int``. This forces the variable's type to always stay the same:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:95 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:96 msgid "Godot will try to infer types if you write a colon, but you omit the type:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:104 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:105 msgid "Currently you can use three types of… types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:106 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:107 msgid ":ref:`Built-in `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:107 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:108 msgid "Core classes and nodes (``Object``, ``Node``, ``Area2D``, ``Camera2D``, etc.)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:109 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:110 msgid "Your own, custom classes. Look at the new :ref:`class_name ` feature to register types in the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:114 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:115 msgid "You don't need to write type hints for constants, as Godot sets it automatically from the assigned value. But you can still do so to make the intent of your code clearer." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:117 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:118 msgid "Custom variable types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:119 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:120 msgid "You can use any class, including your custom classes, as types. There are two ways to use them in scripts. The first method is to preload the script you want to use as a type in a constant:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:128 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:129 msgid "The second method is to use the ``class_name`` keyword when you create. For the example above, your Rifle.gd would look like this:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:136 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:137 msgid "If you use ``class_name``, Godot registers the Rifle type globally in the editor, and you can use it anywhere, without having to preload it into a constant:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:145 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:146 msgid "Variable casting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:147 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:148 msgid "Type casting is a key concept in typed languages. Casting is the conversion of a value from one type to another." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:150 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:151 msgid "Imagine an Enemy in your game, that ``extends Area2D``. You want it to collide with the Player, a ``KinematicBody2D`` with a script called ``PlayerController`` attached to it. You use the ``on_body_entered`` signal to detect the collision. With typed code, the body you detect is going to be a generic ``PhysicsBody2D``, and not your ``PlayerController`` on the ``_on_body_entered`` callback." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:157 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:158 msgid "You can check if this ``PhysicsBody2D`` is your Player with the ``as`` casting keyword, and using the colon ``:`` again to force the variable to use this type. This forces the variable to stick to the ``PlayerController`` type:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:170 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:172 msgid "As we’re dealing with a custom type, if the ``body`` doesn’t extend ``PlayerController``, the ``player``\\ variable will be set to ``null``. We can use this to check if the body is the player or not. We will also get full autocompletion on the player variable thanks to that cast." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:177 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:179 msgid "If you try to cast with a built-in type and it fails, Godot will throw an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:180 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:182 msgid "Safe lines" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:182 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:184 msgid "You can also use casting to ensure safe lines. Safe lines are a new tool in Godot 3.1 to tell you when ambiguous lines of code are type-safe. As you can mix and match typed and dynamic code, at times, Godot doesn’t have enough information to know if an instruction will trigger an error or not at runtime." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:188 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:190 msgid "This happens when you get a child node. Let’s take a timer for example: with dynamic code, you can get the node with ``$Timer``. GDScript supports `duck-typing `__, so even if your timer is of type ``Timer``, it is also a ``Node`` and an ``Object``, two classes it extends. With dynamic GDScript, you also don’t care about the node’s type as long as it has the methods you need to call." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:196 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:198 msgid "You can use casting to tell Godot the type you expect when you get a node: ``($Timer as Timer)``, ``($Player as KinematicBody2D)``, etc. Godot will ensure the type works and if so, the line number will turn green at the left of the script editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:204 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:206 msgid "Safe vs Unsafe Line" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:208 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:210 msgid "You can turn off safe lines or change their color in the editor settings." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:211 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:213 msgid "Define the return type of a function with the arrow ->" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:213 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:215 msgid "To define the return type of a function, write a dash and a right angle bracket ``->`` after its declaration, followed by the return type:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:221 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:223 msgid "The type ``void`` means the function does not return anything. You can use any type, as with variables:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:230 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:232 msgid "You can also use your own nodes as return types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:245 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:248 msgid "Typed or dynamic: stick to one style" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:247 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:250 msgid "Typed GDScript and dynamic GDScript can coexist in the same project. But I recommended to stick to either style for consistency in your codebase, and for your peers. It’s easier for everyone to work together if you follow the same guidelines, and faster to read and understand other people’s code." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:253 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:256 msgid "Typed code takes a little more writing, but you get the benefits we discussed above. Here’s an example of the same, empty script, in a dynamic style:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:265 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:272 msgid "And with static typing:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:275 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:286 msgid "As you can see, you can also use types with the engine’s virtual methods. Signal callbacks, like any methods, can also use types. Here’s a ``body_entered`` signal in a dynamic style:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:284 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:295 msgid "And the same callback, with type hints:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:291 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:302 msgid "You’re free to replace, e.g. the ``CollisionObject2D``, with your own type, to cast parameters automatically:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:301 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:313 msgid "The ``bullet`` variable could hold any ``CollisionObject2D`` here, but we make sure it is our ``Bullet``, a node we created for our project. If it’s anything else, like an ``Area2D``, or any node that doesn’t extend ``Bullet``, the ``bullet`` variable will be ``null``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:307 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:319 msgid "Warning system" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:309 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:321 msgid "The warning system complements typed GDScript. It’s here to help you avoid mistakes that are hard to spot during development, and that may lead to runtime errors." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:313 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:325 msgid "You can configure warnings in the Project Settings under a new section called ``GDScript``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:319 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:331 msgid "warning system project settings" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:321 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:333 msgid "You can find a list of warnings for the active GDScript file in the script editor’s status bar. The example below has 3 warnings:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:327 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:339 msgid "warning system example" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:329 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:341 msgid "To ignore specific warnings in one file, insert a special comment of the form ``# warning-ignore:warning-id``, or click on the ignore link to the right of the warning’s description. Godot will add a comment above the corresponding line and the code won’t trigger the corresponding warning anymore:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:338 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:350 msgid "warning system ignore example" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:340 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:352 msgid "You can also choose to ignore not just one but all warnings of a certain type in this file with ``# warning-ignore-all:warning-id``. To ignore all warnings of all types in a file add the comment ``# warnings-disable`` to it." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:344 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:356 msgid "Warnings won’t prevent the game from running, but you can turn them into errors if you’d like. This way your game won’t compile unless you fix all warnings. Head to the ``GDScript`` section of the Project Settings to turn on this option. Here’s the same file as the previous example with warnings as errors turned on:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:353 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:365 msgid "warnings as errors" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:356 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:368 msgid "Cases where you can’t specify types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:358 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:370 msgid "To wrap up this introduction, let’s cover a few cases where you can’t use type hints. All the examples below **will trigger errors**." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:361 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:373 msgid "You can’t use Enums as types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:368 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:380 msgid "You can’t specify the type of individual members in an array. This will give you an error:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:375 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:387 msgid "You can’t force the assignment of types in a ``for`` loop, as each element the ``for`` keyword loops over already has a different type. So you **cannot** write:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:385 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:397 msgid "Two scripts can’t depend on each other in a cyclic fashion:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:404 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:420 msgid "Summary" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:406 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:422 msgid "Typed GDScript is a powerful tool. Available as of version 3.1 of Godot, it helps you write more structured code, avoid common errors, and create scalable systems. In the future, static types will also bring you a nice performance boost thanks to upcoming compiler optimizations." msgstr "" diff --git a/sphinx/templates/getting_started/scripting/index.pot b/sphinx/templates/getting_started/scripting/index.pot index c47771cd87..eba978f644 100644 --- a/sphinx/templates/getting_started/scripting/index.pot +++ b/sphinx/templates/getting_started/scripting/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/visual_script/getting_started.pot b/sphinx/templates/getting_started/scripting/visual_script/getting_started.pot index f87c52be4b..fd7ed366af 100644 --- a/sphinx/templates/getting_started/scripting/visual_script/getting_started.pot +++ b/sphinx/templates/getting_started/scripting/visual_script/getting_started.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/visual_script/index.pot b/sphinx/templates/getting_started/scripting/visual_script/index.pot index 00a20de932..b23d397bc2 100644 --- a/sphinx/templates/getting_started/scripting/visual_script/index.pot +++ b/sphinx/templates/getting_started/scripting/visual_script/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/visual_script/nodes_purposes.pot b/sphinx/templates/getting_started/scripting/visual_script/nodes_purposes.pot index 54c66a9ec8..9b6a2f0633 100644 --- a/sphinx/templates/getting_started/scripting/visual_script/nodes_purposes.pot +++ b/sphinx/templates/getting_started/scripting/visual_script/nodes_purposes.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -125,7 +125,7 @@ msgid "The result is that this value can be changed from your script by writing msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:122 -msgid "If instead reading this value is desired, drag the node again but hold the *Control* key (or Command on Mac). This will create a getter:" +msgid "If instead reading this value is desired, drag the node again but hold :kbd:`Ctrl` (or :kbd:`Cmd` on macOS). This will create a getter:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:127 @@ -157,7 +157,7 @@ msgid "To use the variable in the script, simply drag it to the canvas to create msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:158 -msgid "Likewise, hold *Control* (*Command* on Mac) to drop a setter:" +msgid "Likewise, hold :kbd:`Ctrl` (or :kbd:`Cmd` on macOS) to drop a setter:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:164 @@ -193,7 +193,7 @@ msgid "Now that the basics are covered, let's discuss the large amount of utilit msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:198 -msgid "Ctrl-F (Command-F on Mac) allows you to search the list." +msgid "Pressing :kbd:`Ctrl + F` (or :kbd:`Cmd + F` on macOS) allows you to search the list." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:200 diff --git a/sphinx/templates/getting_started/scripting/visual_script/what_is_visual_scripting.pot b/sphinx/templates/getting_started/scripting/visual_script/what_is_visual_scripting.pot index 7faccf8e44..1a097b05d9 100644 --- a/sphinx/templates/getting_started/scripting/visual_script/what_is_visual_scripting.pot +++ b/sphinx/templates/getting_started/scripting/visual_script/what_is_visual_scripting.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/animations.pot b/sphinx/templates/getting_started/step_by_step/animations.pot index c97b436899..441dcd4ac7 100644 --- a/sphinx/templates/getting_started/step_by_step/animations.pot +++ b/sphinx/templates/getting_started/step_by_step/animations.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -89,7 +89,7 @@ msgid "Change the logo position to ``(118, 0)`` and add a keyframe again. With t msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:73 -msgid "Pressing \"Play selected animation from start. (Shift-D)\" on the animation panel will make the logo descend." +msgid "Pressing \"Play selected animation from start\" button on the animation panel (or :kbd:`Shift + D` on keyboard) will make the logo descend." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:78 diff --git a/sphinx/templates/getting_started/step_by_step/exporting.pot b/sphinx/templates/getting_started/step_by_step/exporting.pot index 2f39845f04..99e97ae59a 100644 --- a/sphinx/templates/getting_started/step_by_step/exporting.pot +++ b/sphinx/templates/getting_started/step_by_step/exporting.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -244,7 +244,7 @@ msgstr "" msgid "The console window beneath the game tells you if anything goes wrong. You can disable it by setting \"Export With Debug\" off when you export the project." msgstr "" -#: ../../docs/getting_started/step_by_step/exporting.rst:418 +#: ../../docs/getting_started/step_by_step/exporting.rst:420 msgid "While WASM is supported in all major browsers, it is still an emerging technology and you may find some things that don't work. Make sure you have updated your browser to the most recent version, and report any bugs you find at the `Godot Github repository `_." msgstr "" diff --git a/sphinx/templates/getting_started/step_by_step/filesystem.pot b/sphinx/templates/getting_started/step_by_step/filesystem.pot index 161012935a..0ed886bc82 100644 --- a/sphinx/templates/getting_started/step_by_step/filesystem.pot +++ b/sphinx/templates/getting_started/step_by_step/filesystem.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/godot_design_philosophy.pot b/sphinx/templates/getting_started/step_by_step/godot_design_philosophy.pot index ce9690ec09..09d7c42678 100644 --- a/sphinx/templates/getting_started/step_by_step/godot_design_philosophy.pot +++ b/sphinx/templates/getting_started/step_by_step/godot_design_philosophy.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/index.pot b/sphinx/templates/getting_started/step_by_step/index.pot index 7ea75f09cd..f2bc9ea1b8 100644 --- a/sphinx/templates/getting_started/step_by_step/index.pot +++ b/sphinx/templates/getting_started/step_by_step/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/instancing.pot b/sphinx/templates/getting_started/step_by_step/instancing.pot index 34576859bc..bed6a2277f 100644 --- a/sphinx/templates/getting_started/step_by_step/instancing.pot +++ b/sphinx/templates/getting_started/step_by_step/instancing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -85,7 +85,7 @@ msgid "Multiple instances" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:80 -msgid "You can add as many instances as you like to a scene, either by using the \"Instance\" button again, or by clicking on the ball instance and pressing \"Duplicate\" (Ctrl-D):" +msgid "You can add as many instances as you like to a scene, either by using the \"Instance\" button again, or by clicking on the ball instance and pressing \"Duplicate\" (:kbd:`Ctrl + D`):" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:86 @@ -97,30 +97,30 @@ msgid "Editing instances" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:93 -msgid "Open the ``Ball`` scene and add a ``PhysicsMaterial`` by clicking on the down arrow and selecting \"New PhysicsMaterial\"." +msgid "Open the ``Ball`` scene and add a ``PhysicsMaterial`` by opening the \"Physics Material Override\" dropdown in the Inspector dock and selecting \"New PhysicsMaterial\"." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:98 +#: ../../docs/getting_started/step_by_step/instancing.rst:99 msgid "Then, expand the material by clicking on it, and set the ``Bounce`` property to ``1``." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:103 +#: ../../docs/getting_started/step_by_step/instancing.rst:104 msgid "Press \"Play\" and notice that all of the instanced balls are now much more bouncy. Because the instanced balls are based on the saved scene, changes to that scene will affect all instances." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:107 +#: ../../docs/getting_started/step_by_step/instancing.rst:108 msgid "You can also adjust individual instances. Set the bounce value back to ``0`` and then in the ``Main`` scene, select one of the instanced balls. Resources like ``PhysicsMaterial`` are shared between instances by default, so we need to make it unique. Click on the down arrow and select \"Make Unique\". Set its ``Bounce`` to ``1`` and press \"Play\"." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:115 +#: ../../docs/getting_started/step_by_step/instancing.rst:116 msgid "Notice that a grey \"revert\" button appears next to the adjusted property. When this button is present, it means you modified a property in the instanced scene to override its value in the saved scene. Even if that property is modified in the original scene, the custom value will remain. Pressing the revert button will restore the property to the value in the saved scene." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:123 +#: ../../docs/getting_started/step_by_step/instancing.rst:124 msgid "Conclusion" msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:125 +#: ../../docs/getting_started/step_by_step/instancing.rst:126 msgid "Instancing can be useful when you want to create many copies of the same object. It is also possible to create instances in code by using GDScript, see :ref:`doc_instancing_continued`." msgstr "" diff --git a/sphinx/templates/getting_started/step_by_step/instancing_continued.pot b/sphinx/templates/getting_started/step_by_step/instancing_continued.pot index 6174c714c6..e7baf8f594 100644 --- a/sphinx/templates/getting_started/step_by_step/instancing_continued.pot +++ b/sphinx/templates/getting_started/step_by_step/instancing_continued.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/intro_to_the_editor_interface.pot b/sphinx/templates/getting_started/step_by_step/intro_to_the_editor_interface.pot index f64163d9d6..99925e935d 100644 --- a/sphinx/templates/getting_started/step_by_step/intro_to_the_editor_interface.pot +++ b/sphinx/templates/getting_started/step_by_step/intro_to_the_editor_interface.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -85,19 +85,19 @@ msgid "Your first look at Godot’s editor" msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:82 -msgid "Welcome to Godot! With your project open, you should see the editor’s interface with empty docks on the right side." +msgid "Welcome to Godot! With your project open, you should see the editor’s interface with menus along the top of the interface and docks along the far extremes of the interface on either side of the viewport." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:87 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:88 msgid "At the top, from left to right, you can see the **main menus**, the **workspaces**, and the **playtest buttons**." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:90 -msgid "On the bottom left side, you have the **FileSystem dock**, where you’ll manage your project files and assets." +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:91 +msgid "The **FileSystem dock** is where you’ll manage your project files and assets." msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:95 -msgid "On the right side, you’ll find the **Scene dock**, which lists the active scene’s content and the **Inspector** in the bottom right corner." +msgid "The **Scene dock** lists the active scene’s content and the **Inspector** allows for the management of the properties of a scene's content." msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:100 @@ -117,50 +117,50 @@ msgid "You can see four workspace buttons at the top: 2D, 3D, Script and AssetLi msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:118 -msgid "You’ll use the **2D workspace** for all types of games. In addition to 2D games, the 2D workspace is where you'll build your interfaces. Press F1 to access it." +msgid "You’ll use the **2D workspace** for all types of games. In addition to 2D games, the 2D workspace is where you'll build your interfaces. Press :kbd:`F1` (or :kbd:`Alt + 1` on macOS) to access it." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:123 -msgid "In the **3D workspace**, you can work with meshes, lights, and design levels for 3D games. Press F2 to access it." +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:124 +msgid "In the **3D workspace**, you can work with meshes, lights, and design levels for 3D games. Press :kbd:`F2` (or :kbd:`Alt + 2` on macOS) to access it." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:128 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:129 msgid "Notice the perspective button under the toolbar, it opens a list of options related to the 3D viewport." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:133 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:134 msgid "Read :ref:`doc_introduction_to_3d` for more detail about **3D workspace**." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:135 -msgid "The **Script** workspace is a complete code editor with a debugger, rich auto-completion, and built-in code reference. Press F3 to access it, and F4 to search the reference." +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:136 +msgid "The **Script** workspace is a complete code editor with a debugger, rich auto-completion, and built-in code reference. Press :kbd:`F3` (or :kbd:`Alt + 3` on macOS) to access it, and :kbd:`F4` to search the reference." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:141 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:142 msgid "Finally the **AssetLib** is a library of Free add-ons, scripts and assets to use in your projects." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:145 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:146 msgid "Modify the interface" msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:147 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:148 msgid "Godot’s interface lives in a single window. You cannot split it across multiple screens although you can work with an external code editor like Atom or Visual Studio Code for instance." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:152 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:153 msgid "Move and resize docks" msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:154 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:155 msgid "Click and drag on the edge of any dock or panel to resize it horizontally or vertically." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:159 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:160 msgid "Click the three-dotted icon at the top of any dock to change its location." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:164 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:165 msgid "Go to the ``Editor`` menu and ``Editor Settings`` to fine-tune the look and feel of the editor." msgstr "" diff --git a/sphinx/templates/getting_started/step_by_step/resources.pot b/sphinx/templates/getting_started/step_by_step/resources.pot index 09df4a818f..6d1b9694bd 100644 --- a/sphinx/templates/getting_started/step_by_step/resources.pot +++ b/sphinx/templates/getting_started/step_by_step/resources.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/scene_tree.pot b/sphinx/templates/getting_started/step_by_step/scene_tree.pot index f26d7c6e52..e9566f891a 100644 --- a/sphinx/templates/getting_started/step_by_step/scene_tree.pot +++ b/sphinx/templates/getting_started/step_by_step/scene_tree.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/scenes_and_nodes.pot b/sphinx/templates/getting_started/step_by_step/scenes_and_nodes.pot index 593aeb5e30..5a856e542b 100644 --- a/sphinx/templates/getting_started/step_by_step/scenes_and_nodes.pot +++ b/sphinx/templates/getting_started/step_by_step/scenes_and_nodes.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -157,78 +157,78 @@ msgid "First of all, the scene changes to the 2D editor (because Label is a 2D N msgstr "" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:133 -msgid "The node appears in the scene tree editor (box in the top right corner), and the label properties appear in the Inspector (box in the bottom right corner)." +msgid "The node appears in the scene tree editor in the Scene dock, and the label properties appear in the Inspector dock." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:137 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:136 msgid "The next step will be to change the \"Text\" Property of the label. Let's change it to \"Hello World\":" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:142 -msgid "Ok, everything's ready to run the scene! Press the PLAY SCENE Button on the top bar (or hit F6):" +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:141 +msgid "Ok, everything's ready to run the scene! Press the PLAY SCENE Button on the top bar (or hit :kbd:`F6`):" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:147 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:146 msgid "Aaaand... Oops." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:151 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:150 msgid "Scenes need to be saved to be run, so save the scene to something like Hello.tscn in Scene -> Save:" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:156 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:155 msgid "And here's when something funny happens. The file dialog is a special file dialog, and only allows you to save inside the project. The project root is ``res://`` which means \"resource path\". This means that files can only be saved inside the project. For the future, when doing file operations in Godot, remember that ``res://`` is the resource path, and no matter the platform or install location, it is the way to locate where resource files are from inside the game." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:164 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:163 msgid "After saving the scene and pressing run scene again, the \"Hello World\" demo should finally execute:" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:169 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:168 msgid "Success!" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:173 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:172 msgid "If this doesn't immediately work and you have a hiDPI display on at least one of your monitors, go to **Project → Project Settings → Display → Window** then enable **Allow Hidpi** under **Dpi**." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:181 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:180 msgid "Configuring the project" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:183 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:182 msgid "Ok, it's time to configure the project. Right now, the only way to run something is to execute the current scene. Projects, however, may have several scenes, so one of them must be set as the main scene. This is the scene that will be loaded any time the project is run." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:188 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:187 msgid "These settings are all stored in a project.godot file, which is a plaintext file in win.ini format (for easy editing). There are dozens of settings that you can change in this file to alter how a project executes. To simplify this process, Godot provides a project settings dialog, which acts as a sort of frontend to editing a project.godot file." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:194 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:193 msgid "To access that dialog, select Project -> Project Settings. Try it now." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:196 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:195 msgid "Once the window opens, let's select a main scene. Locate the `Application/Run/Main Scene` property and click on it to select 'Hello.tscn'." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:201 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:200 msgid "Now, with this change, when you press the regular Play button (or F5), this scene will run, no matter which scene is actively being edited." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:204 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:203 msgid "The project settings dialog provides a lot of options that can be saved to a project.godot file and shows their default values. If you change a value, a tick is marked to the left of its name. This means that the property will be saved to the project.godot file and remembered." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:209 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:208 msgid "As a side note, it is also possible to add custom configuration options and read them in at run-time using the :ref:`ProjectSettings ` singleton." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:213 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:212 msgid "To be continued..." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:215 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:214 msgid "This tutorial talked about \"scenes and nodes\", but so far there has been only *one* scene and *one* node! Don't worry, the next tutorial will expand on that..." msgstr "" diff --git a/sphinx/templates/getting_started/step_by_step/scripting.pot b/sphinx/templates/getting_started/step_by_step/scripting.pot index ff6a12135b..ab96cf738c 100644 --- a/sphinx/templates/getting_started/step_by_step/scripting.pot +++ b/sphinx/templates/getting_started/step_by_step/scripting.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -157,7 +157,7 @@ msgid "Scene setup" msgstr "" #: ../../docs/getting_started/step_by_step/scripting.rst:107 -msgid "Use the \"Add Child Node\" dialogue accessed from the Scene tab (or by pressing ``Ctrl+A``) to create a hierarchy with the following nodes:" +msgid "Use the \"Add Child Node\" dialogue accessed from the Scene tab (or by pressing :kbd:`Ctrl + A`) to create a hierarchy with the following nodes:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting.rst:110 diff --git a/sphinx/templates/getting_started/step_by_step/scripting_continued.pot b/sphinx/templates/getting_started/step_by_step/scripting_continued.pot index 4235f2f2a6..c920fdd3a4 100644 --- a/sphinx/templates/getting_started/step_by_step/scripting_continued.pot +++ b/sphinx/templates/getting_started/step_by_step/scripting_continued.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/signals.pot b/sphinx/templates/getting_started/step_by_step/signals.pot index bfea058fa5..980ae77f79 100644 --- a/sphinx/templates/getting_started/step_by_step/signals.pot +++ b/sphinx/templates/getting_started/step_by_step/signals.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -77,62 +77,78 @@ msgid "The target node *must* have a script attached or you'll receive an error msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:63 +msgid "On the right side, you can bind an arbitrary number of arguments of (possibly) different types. This can be useful when you have more than one signal connected to the same method, as each signal propagation will result in different values for those extra call arguments." +msgstr "" + +#: ../../docs/getting_started/step_by_step/signals.rst:67 msgid "On the bottom of the window is a field labeled \"Receiver Method\". This is the name of the function in the target node's script that you want to use. By default, Godot will create this function using the naming convention ``_on__`` but you can change it if you wish." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:68 +#: ../../docs/getting_started/step_by_step/signals.rst:72 msgid "Click \"Connect\" and you'll see that the function has been created in the script:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:88 +#: ../../docs/getting_started/step_by_step/signals.rst:92 msgid "Now we can replace the placeholder code with whatever code we want to run when the signal is received. Let's make the Sprite blink:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:112 +#: ../../docs/getting_started/step_by_step/signals.rst:116 msgid "Run the scene and you'll see the Sprite blinking on and off every second. You can change the Timer's *Wait Time* property to alter this." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:116 +#: ../../docs/getting_started/step_by_step/signals.rst:120 msgid "Connecting signals in code" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:118 +#: ../../docs/getting_started/step_by_step/signals.rst:122 msgid "You can also make the signal connection in code rather than with the editor. This is usually necessary when you're instancing nodes via code and so you can't use the editor to make the connection." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:122 +#: ../../docs/getting_started/step_by_step/signals.rst:126 msgid "First, disconnect the signal by selecting the connection in the Timer's \"Node\" tab and clicking disconnect." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:127 +#: ../../docs/getting_started/step_by_step/signals.rst:131 msgid "To make the connection in code, we can use the ``connect`` function. We'll put it in ``_ready()`` so that the connection will be made on run. The syntax of the function is ``.connect(, , )``. Here is the code for our Timer connection:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:160 +#: ../../docs/getting_started/step_by_step/signals.rst:164 msgid "Custom signals" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:162 +#: ../../docs/getting_started/step_by_step/signals.rst:166 msgid "You can also declare your own custom signals in Godot:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:180 +#: ../../docs/getting_started/step_by_step/signals.rst:184 msgid "Once declared, your custom signals will appear in the Inspector and can be connected in the same way as a node's built-in signals." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:183 +#: ../../docs/getting_started/step_by_step/signals.rst:187 msgid "To emit a signal via code, use the ``emit_signal`` function:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:209 +#: ../../docs/getting_started/step_by_step/signals.rst:212 +msgid "A signal can also optionally declare one or more arguments. Specify the argument names between parentheses:" +msgstr "" + +#: ../../docs/getting_started/step_by_step/signals.rst:232 +msgid "The signal arguments show up in the editor's node dock, and Godot can use them to generate callback functions for you. However, you can still emit any number of arguments when you emit signals. So it's up to you to emit the correct values." +msgstr "" + +#: ../../docs/getting_started/step_by_step/signals.rst:237 +msgid "To pass values, add them as the second argument to the ``emit_signal`` function:" +msgstr "" + +#: ../../docs/getting_started/step_by_step/signals.rst:263 msgid "Conclusion" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:211 +#: ../../docs/getting_started/step_by_step/signals.rst:265 msgid "Many of Godot's built-in node types provide signals you can use to detect events. For example, an :ref:`Area2D ` representing a coin emits a ``body_entered`` signal whenever the player's physics body enters its collision shape, allowing you to know when the player collected it." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:216 +#: ../../docs/getting_started/step_by_step/signals.rst:270 msgid "In the next section, :ref:`doc_your_first_game`, you'll build a complete game including several uses of signals to connect different game components." msgstr "" diff --git a/sphinx/templates/getting_started/step_by_step/singletons_autoload.pot b/sphinx/templates/getting_started/step_by_step/singletons_autoload.pot index e347b2e29e..482c7e4dc1 100644 --- a/sphinx/templates/getting_started/step_by_step/singletons_autoload.pot +++ b/sphinx/templates/getting_started/step_by_step/singletons_autoload.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/splash_screen.pot b/sphinx/templates/getting_started/step_by_step/splash_screen.pot index 561e8f9b86..4ee5eeaf64 100644 --- a/sphinx/templates/getting_started/step_by_step/splash_screen.pot +++ b/sphinx/templates/getting_started/step_by_step/splash_screen.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/ui_code_a_life_bar.pot b/sphinx/templates/getting_started/step_by_step/ui_code_a_life_bar.pot index ee38b360f6..8a590afe67 100644 --- a/sphinx/templates/getting_started/step_by_step/ui_code_a_life_bar.pot +++ b/sphinx/templates/getting_started/step_by_step/ui_code_a_life_bar.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -297,7 +297,7 @@ msgid "``str`` is a built-in function that converts about any value to text. ``N msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:354 -msgid "Also call ``update_health`` at the end of the ``_ready`` function to initialize the ``Number`` node's ``text`` with the right value at the start of the game. Press F5 to test the game: the life bar updates with every attack!" +msgid "Also call ``update_health`` at the end of the ``_ready`` function to initialize the ``Number`` node's ``text`` with the right value at the start of the game. Press :kbd:`F5` to test the game: the life bar updates with every attack!" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:361 diff --git a/sphinx/templates/getting_started/step_by_step/ui_game_user_interface.pot b/sphinx/templates/getting_started/step_by_step/ui_game_user_interface.pot index 3ddfd69422..363b3898ea 100644 --- a/sphinx/templates/getting_started/step_by_step/ui_game_user_interface.pot +++ b/sphinx/templates/getting_started/step_by_step/ui_game_user_interface.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -187,7 +187,7 @@ msgid "If you select both nodes, you should see something like this" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:163 -msgid "As they have a container as their direct parent, we cannot move them freely: the ``Count`` node will always reset their anchors, their size and position. Try to move and resize the nodes in the viewport. Then, select any of the three textures and press Ctrl Up or Ctrl Down to reorder them in the Scene dock. They'll snap back to their previous size and position." +msgid "As they have a container as their direct parent, we cannot move them freely: the ``Count`` node will always reset their anchors, their size and position. Try to move and resize the nodes in the viewport. Then, select any of the three textures and press :kbd:`Ctrl + Up` or :kbd:`Ctrl + Down` to reorder them in the Scene dock. They'll snap back to their previous size and position." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:170 @@ -259,7 +259,7 @@ msgid "The bomb and emerald counters are like the bar's ``Count`` node. So we'll msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:259 -msgid "Under the ``Bar`` node, select ``Count`` and press Ctrl D to duplicate it. Drag and drop the new node under the ``Counters`` ``HBoxContainer`` at the bottom of the scene tree. You should see it resize automatically. Don't worry about this for now, we'll fix the size soon." +msgid "Under the ``Bar`` node, select ``Count`` and press :kbd:`Ctrl + D` to duplicate it. Drag and drop the new node under the ``Counters`` ``HBoxContainer`` at the bottom of the scene tree. You should see it resize automatically. Don't worry about this for now, we'll fix the size soon." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:264 @@ -363,7 +363,7 @@ msgid "Inherit the Bar Scene to build the LifeBar" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:408 -msgid "Go to ``Scene -> New Inherited Scene`` to create a new type of ``Bar``. Select the Bar scene and open it. You should see a new [unsaved] tab, that's like your ``Bar``, but with all nodes except the root in grey. Press ``Meta+S`` to save the new inherited scene and name it ``LifeBar``." +msgid "Go to ``Scene -> New Inherited Scene`` to create a new type of ``Bar``. Select the Bar scene and open it. You should see a new [unsaved] tab, that's like your ``Bar``, but with all nodes except the root in grey. Press :kbd:`Meta + S` to save the new inherited scene and name it ``LifeBar``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:416 @@ -411,7 +411,7 @@ msgid "Use this option to create unique copies of the resources for one node" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:476 -msgid "When you duplicate a node from the Scene tree, with ``Meta+D``, it shares its resources with the original node. You need to use ``Make Sub-Resources Unique`` before you can tweak the resources without affecting the source node." +msgid "When you duplicate a node from the Scene tree, with :kbd:`Meta + D`, it shares its resources with the original node. You need to use ``Make Sub-Resources Unique`` before you can tweak the resources without affecting the source node." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:481 diff --git a/sphinx/templates/getting_started/step_by_step/ui_introduction_to_the_ui_system.pot b/sphinx/templates/getting_started/step_by_step/ui_introduction_to_the_ui_system.pot index e1a91ede7e..8dd1184c4b 100644 --- a/sphinx/templates/getting_started/step_by_step/ui_introduction_to_the_ui_system.pot +++ b/sphinx/templates/getting_started/step_by_step/ui_introduction_to_the_ui_system.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -173,7 +173,7 @@ msgid "TextureButton" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:100 -msgid "**TextureButton** is like TextureRect, except it has 5 texture slots: one for each of the button's states. Most of the time, you'll use the Normal, Pressed, and Hover textures. Focused is useful if your interface listens to the keyboard's input. The sixth image slot, the Click Mask, lets you define the clickable area using a 2-bit, pure black and white image." +msgid "**TextureButton** is like TextureRect, except it has 5 texture slots: one for each of the button's states. Most of the time, you'll use the Normal, Pressed, and Hover textures. Focused is useful if your interface listens to the keyboard's input. The sixth image slot, the Click Mask, lets you define the clickable area using a 1-bit, pure black and white image." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:107 diff --git a/sphinx/templates/getting_started/step_by_step/ui_main_menu.pot b/sphinx/templates/getting_started/step_by_step/ui_main_menu.pot index e5e58a8eb9..3fc921a923 100644 --- a/sphinx/templates/getting_started/step_by_step/ui_main_menu.pot +++ b/sphinx/templates/getting_started/step_by_step/ui_main_menu.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -150,7 +150,7 @@ msgid "Let's create the main menu. We'll build it in a single scene. To create a msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:126 -msgid "We have to add a root node before we can save the scene. Your UI's root should be the outermost container or element. In this case it's a ``MarginContainer``. ``MarginContainer`` is a good starting point for most interfaces, as you often need padding around the UI. Press ``Meta+S`` to save the scene to the disk. Name it *MainMenu*." +msgid "We have to add a root node before we can save the scene. Your UI's root should be the outermost container or element. In this case it's a ``MarginContainer``. ``MarginContainer`` is a good starting point for most interfaces, as you often need padding around the UI. Press :kbd:`Meta + S` to save the scene to the disk. Name it *MainMenu*." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:132 @@ -202,7 +202,7 @@ msgid "and the main menu’s illustration." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:155 -msgid "Click the **Add Node** button or press ``Meta+A`` on your keyboard. Start to type ``TextureRect`` to find the corresponding node and press enter. With the new node selected, press ``Meta+D`` five times to create five extra ``TextureRect`` instances." +msgid "Click the **Add Node** button or press :kbd:`Meta + A` on your keyboard. Start to type ``TextureRect`` to find the corresponding node and press enter. With the new node selected, press :kbd:`Meta + D` five times to create five extra ``TextureRect`` instances." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:160 @@ -270,7 +270,7 @@ msgid "The character node centers inside the right half of the screen as soon as msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:235 -msgid "To space out the menu options and the logo on the left, we'll use one final container and its size flags. Select the ``VBoxContainer`` and press ``Meta+A`` to add a new node inside it. Add a second ``VBoxContainer`` and name it *MenuOptions*. Select all three menu options, ``Continue``, ``NewGame`` and ``Options``, and drag and drop them inside the new ``VBoxContainer``. The UI's layout should barely change, if at all." +msgid "To space out the menu options and the logo on the left, we'll use one final container and its size flags. Select the ``VBoxContainer`` and press :kbd:`Meta + A` to add a new node inside it. Add a second ``VBoxContainer`` and name it *MenuOptions*. Select all three menu options, ``Continue``, ``NewGame`` and ``Options``, and drag and drop them inside the new ``VBoxContainer``. The UI's layout should barely change, if at all." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:245 @@ -310,7 +310,7 @@ msgid "A responsive User Interface is all about making sure our UIs scale well o msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:289 -msgid "The order in which you nest matters. To see if your UI adapts nicely to different screen ratios, select the root node, press the Q key to activate the Select Mode, select the container and click and drag on one of the container's corners to resize it. The UI components should flow inside of it." +msgid "The order in which you nest matters. To see if your UI adapts nicely to different screen ratios, select the root node, press :kbd:`Q` to activate the Select Mode, select the container and click and drag on one of the container's corners to resize it. The UI components should flow inside of it." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:295 diff --git a/sphinx/templates/getting_started/step_by_step/your_first_game.pot b/sphinx/templates/getting_started/step_by_step/your_first_game.pot index 8be94dac05..a049116ec7 100644 --- a/sphinx/templates/getting_started/step_by_step/your_first_game.pot +++ b/sphinx/templates/getting_started/step_by_step/your_first_game.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -93,7 +93,7 @@ msgid "Before we add any children to the ``Player`` node, we want to make sure w msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:85 -msgid "Save the scene. Click Scene -> Save, or press ``Ctrl+S`` on Windows/Linux or ``Command+S`` on Mac." +msgid "Save the scene. Click Scene -> Save, or press :kbd:`Ctrl + S` on Windows/Linux or :kbd:`Cmd + S` on macOS." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:87 @@ -469,7 +469,7 @@ msgid "Drag ``Mob.tscn`` from the \"FileSystem\" panel and drop it in the ``Mob` msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:740 -msgid "Next, click on the Player and connect the ``hit`` signal. We want to make a new function named ``game_over``, which will handle what needs to happen when a game ends. Type \"game_over\" in the \"Method In Node\" box at the bottom of the \"Connecting Signal\" window. Add the following code, as well as a ``new_game`` function to set everything up for a new game:" +msgid "Next, click on the Player and connect the ``hit`` signal. We want to make a new function named ``game_over``, which will handle what needs to happen when a game ends. Type \"game_over\" in the \"Receiver Method\" box at the bottom of the \"Connecting Signal\" window. Add the following code, as well as a ``new_game`` function to set everything up for a new game:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:777 @@ -758,7 +758,7 @@ msgid "In the ``HUD`` scene, select the ``StartButton`` and find its *Shortcut* msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1230 -msgid "Now when the start button appears, you can either click it or press the spacebar to start the game." +msgid "Now when the start button appears, you can either click it or press :kbd:`Space` to start the game." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1234 diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/animation.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/animation.pot index d397637655..05b1acd324 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/animation.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/animation.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/index.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/index.pot index 36d30f4ecc..cc3148fed9 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/index.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/lights.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/lights.pot index 5f4b7c59f3..fb7805277b 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/lights.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/lights.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/material.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/material.pot index 2a278854ec..7a26acc0b5 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/material.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/material.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/mesh.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/mesh.pot index 34f920a599..fce9b3e79a 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/mesh.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/mesh.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/physics.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/physics.pot index 0f3410be5b..37ed5d97da 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/physics.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/physics.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/skeleton.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/skeleton.pot index 236fa01659..7304e3f57c 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/skeleton.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/skeleton.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/import_process.pot b/sphinx/templates/getting_started/workflow/assets/import_process.pot index 70c3c3d3c9..ad889b0a5c 100644 --- a/sphinx/templates/getting_started/workflow/assets/import_process.pot +++ b/sphinx/templates/getting_started/workflow/assets/import_process.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/importing_audio_samples.pot b/sphinx/templates/getting_started/workflow/assets/importing_audio_samples.pot index a1d766b911..4e521ae30a 100644 --- a/sphinx/templates/getting_started/workflow/assets/importing_audio_samples.pot +++ b/sphinx/templates/getting_started/workflow/assets/importing_audio_samples.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/importing_images.pot b/sphinx/templates/getting_started/workflow/assets/importing_images.pot index 55b15d0868..ca311cdba1 100644 --- a/sphinx/templates/getting_started/workflow/assets/importing_images.pot +++ b/sphinx/templates/getting_started/workflow/assets/importing_images.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/importing_scenes.pot b/sphinx/templates/getting_started/workflow/assets/importing_scenes.pot index 5087330da5..3c396d3f13 100644 --- a/sphinx/templates/getting_started/workflow/assets/importing_scenes.pot +++ b/sphinx/templates/getting_started/workflow/assets/importing_scenes.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/importing_translations.pot b/sphinx/templates/getting_started/workflow/assets/importing_translations.pot index acafd82bfe..f59c7d8737 100644 --- a/sphinx/templates/getting_started/workflow/assets/importing_translations.pot +++ b/sphinx/templates/getting_started/workflow/assets/importing_translations.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -49,151 +49,163 @@ msgid "Translation format" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:40 -msgid "To complete the picture and allow efficient support for translations, Godot has a special importer that can read CSV files. All spreadsheet editors (be it Libreoffice, Microsoft Office, Google Docs, etc.) can export to this format, so the only requirement is that the files have a special arrangement. The CSV files must be saved in UTF-8 encoding and be formatted as follows:" +msgid "To complete the picture and allow efficient support for translations, Godot has a special importer that can read CSV files. Most spreadsheet editors can export to this format, so the only requirement is that the files have a special arrangement. The CSV files **must** be saved with UTF-8 encoding without a `byte order mark `__." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 +msgid "By default, Microsoft Excel will always save CSV files with ANSI encoding rather than UTF-8. There is no built-in way to do this, but there are workarounds as described `here `__." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:53 +msgid "We recommend using `LibreOffice `__ or Google Sheets instead." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:55 +msgid "CSV files must be formatted as follows:" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:58 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:77 msgid "keys" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:58 msgid "" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:58 msgid "" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:58 msgid "" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:50 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:60 msgid "KEY1" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:50 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:50 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:50 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:52 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:52 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:52 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:54 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:54 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:54 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:60 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:60 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:60 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:62 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:62 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:62 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:64 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:64 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:64 msgid "string" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:52 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:62 msgid "KEY2" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:54 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:64 msgid "KEYN" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:57 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 msgid "The \"lang\" tags must represent a language, which must be one of the :ref:`valid locales ` supported by the engine. The \"KEY\" tags must be unique and represent a string universally (they are usually in uppercase, to differentiate from other strings). These keys will be replaced at runtime by the matching translated string. Note that the case is important, \"KEY1\" and \"Key1\" will be different keys. The top-left cell is ignored and can be left empty or having any content. Here's an example:" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:77 msgid "en" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:77 msgid "es" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:77 msgid "ja" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:79 msgid "GREET" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:79 msgid "Hello, friend!" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:79 msgid "Hola, amigo!" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:79 msgid "こんにちは" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:71 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:81 msgid "ASK" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:71 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:81 msgid "How are you?" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:71 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:81 msgid "Cómo está?" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:71 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:81 msgid "元気ですか" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:73 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:83 msgid "BYE" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:73 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:83 msgid "Goodbye" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:73 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:83 msgid "Adiós" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:73 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:83 msgid "さようなら" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:75 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:85 msgid "QUOTE" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:75 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:85 msgid "\"Hello\" said the man." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:75 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:85 msgid "\"Hola\" dijo el hombre." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:75 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:85 msgid "「こんにちは」男は言いました" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:78 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:88 msgid "The same example is shown below as a comma-separated plain text file, which should be the result of editing the above in a spreadsheet. When editing the plain text version, be sure to enclose with double quotes any message that contains commas, line breaks or double quotes, so that commas are not parsed as delimiters, line breaks don't create new entries and double quotes are not parsed as enclosing characters. Be sure to escape any double quotes a message may contain by preceding them with another double quote. Alternatively, you can select another delimiter than comma in the import options." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:97 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:107 msgid "CSV importer" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:99 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:109 msgid "Godot will treat CSV files as translations by default. It will import them and generate one or more compressed translation resource files next to it." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:102 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:112 msgid "Importing will also add the translation to the list of translations to load when the game runs, specified in project.godot (or the project settings). Godot allows loading and removing translations at runtime as well." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:107 -msgid "Select the ``.csv`` file and access the \"Import\" dock to define import options. You can toggle the compression of the imported translations, and select the delimiter to use when parsing the CSV file." +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:117 +msgid "Select the ``.csv`` file and access the **Import** dock to define import options. You can toggle the compression of the imported translations, and select the delimiter to use when parsing the CSV file." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:113 -msgid "Be sure to click \"Reimport\" after any change to these options." +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:123 +msgid "Be sure to click **Reimport** after any change to these options." msgstr "" diff --git a/sphinx/templates/getting_started/workflow/assets/index.pot b/sphinx/templates/getting_started/workflow/assets/index.pot index 29b4f7721d..c278d2a929 100644 --- a/sphinx/templates/getting_started/workflow/assets/index.pot +++ b/sphinx/templates/getting_started/workflow/assets/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.pot b/sphinx/templates/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.pot index 178f186bd4..046dcecb3d 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -129,7 +129,7 @@ msgid "Until Godot 3.1, another use was just for convenience: autoloads have a g msgstr "" #: ../../docs/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.rst:103 -msgid "Autoload is not exactly a Singleton. Nothing prevents you from instantiating copies of an auto-loaded node. It is only a tool that makes a node load automatically as a child of the root of your scene tree, regardless of your game's node structure or which scene you run, e.g. by pressing the ``F6`` key." +msgid "Autoload is not exactly a Singleton. Nothing prevents you from instantiating copies of an auto-loaded node. It is only a tool that makes a node load automatically as a child of the root of your scene tree, regardless of your game's node structure or which scene you run, e.g. by pressing :kbd:`F6` key." msgstr "" #: ../../docs/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.rst:108 diff --git a/sphinx/templates/getting_started/workflow/best_practices/data_preferences.pot b/sphinx/templates/getting_started/workflow/best_practices/data_preferences.pot index 53b4e706af..4d1a78f620 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/data_preferences.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/data_preferences.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/godot_interfaces.pot b/sphinx/templates/getting_started/workflow/best_practices/godot_interfaces.pot index 4f048f9e3c..bf4de7079a 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/godot_interfaces.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/godot_interfaces.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/godot_notifications.pot b/sphinx/templates/getting_started/workflow/best_practices/godot_notifications.pot index 39b90307ba..f979b4e66e 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/godot_notifications.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/godot_notifications.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/index.pot b/sphinx/templates/getting_started/workflow/best_practices/index.pot index d0c543857d..f874493f6c 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/index.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/introduction_best_practices.pot b/sphinx/templates/getting_started/workflow/best_practices/introduction_best_practices.pot index d0ea27f84a..768e107882 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/introduction_best_practices.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/introduction_best_practices.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/logic_preferences.pot b/sphinx/templates/getting_started/workflow/best_practices/logic_preferences.pot index b3badbdd56..90983e8ccc 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/logic_preferences.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/logic_preferences.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/node_alternatives.pot b/sphinx/templates/getting_started/workflow/best_practices/node_alternatives.pot index 37803293c0..4aa9d89d97 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/node_alternatives.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/node_alternatives.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/scene_organization.pot b/sphinx/templates/getting_started/workflow/best_practices/scene_organization.pot index 2727980c41..3309726bee 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/scene_organization.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/scene_organization.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/scenes_versus_scripts.pot b/sphinx/templates/getting_started/workflow/best_practices/scenes_versus_scripts.pot index 25ff2febfe..6d1acacd05 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/scenes_versus_scripts.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/scenes_versus_scripts.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/what_are_godot_classes.pot b/sphinx/templates/getting_started/workflow/best_practices/what_are_godot_classes.pot index 4271cac268..76dc277e3b 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/what_are_godot_classes.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/what_are_godot_classes.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/android_custom_build.pot b/sphinx/templates/getting_started/workflow/export/android_custom_build.pot index 6516b9e28f..48b3fb56be 100644 --- a/sphinx/templates/getting_started/workflow/export/android_custom_build.pot +++ b/sphinx/templates/getting_started/workflow/export/android_custom_build.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -129,7 +129,7 @@ msgid "In there, run ``sdkmanager --licenses``:" msgstr "" #: ../../docs/getting_started/workflow/export/android_custom_build.rst:117 -msgid "This will ask you to accept several licenses, just write ``y`` and press Enter on every of them until it's done." +msgid "This will ask you to accept several licenses, just write ``y`` and press :kbd:`Enter` on every of them until it's done." msgstr "" #: ../../docs/getting_started/workflow/export/android_custom_build.rst:120 diff --git a/sphinx/templates/getting_started/workflow/export/changing_application_icon_for_windows.pot b/sphinx/templates/getting_started/workflow/export/changing_application_icon_for_windows.pot index 5981738109..6d4b2161bf 100644 --- a/sphinx/templates/getting_started/workflow/export/changing_application_icon_for_windows.pot +++ b/sphinx/templates/getting_started/workflow/export/changing_application_icon_for_windows.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_android.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_android.pot index 05d09f0772..61c15eb286 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_android.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_android.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,166 +29,178 @@ msgid "Download the Android SDK" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:12 -msgid "Download and install the Android SDK from https://developer.android.com/studio/" +msgid "Download and install the Android SDK from `developer.android.com `__." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:16 -msgid "Install OpenJDK or Oracle JDK" +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:15 +msgid "If you install Android Studio, you need to run it once to complete the SDK setup." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:18 +msgid "Install OpenJDK or Oracle JDK" +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:20 msgid "Download and install `OpenJDK `__ or `Oracle JDK `__. Versions below JDK 8 may not work; some users have reported issues with the jarsigner (used to sign the APKs) in JDK 7." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:21 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:22 +msgid "If you install OpenJDK, choose ``1.8``. Don't choose the ``openjdk-jre`` files as that only contains the JRE, not the JDK which is required here." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:25 msgid "Create a debug.keystore" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:23 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:27 msgid "Android needs a debug keystore file to install to devices and distribute non-release APKs. If you have used the SDK before and have built projects, ant or eclipse probably generated one for you (on Linux and macOS, you can find it in the ``~/.android`` directory)." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:28 -msgid "If you can't find it or need to generate one, the keytool command from the JDK can be used for this purpose:" +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:32 +msgid "If you can't find it or need to generate one, the keytool command from the JDK can be used for this purpose::" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:36 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:37 +msgid "This will create a ``debug.keystore`` file in your current directory. You should move it to a memorable location such as ``%USERPROFILE%\\.android\\``, because you will need its location in a later step. For more information on ``keytool`` usage, see `this Q&A article `__." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:40 msgid "Make sure you have adb" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:38 -msgid "Android Debug Bridge (adb) is the command line tool used to communicate with Android devices. It's installed with the SDK, but you may need to install one (any) of the Android API levels for it to be installed in the SDK directory." +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:42 +msgid "Android Debug Bridge (``adb``) is the command line tool used to communicate with Android devices. It's installed with the SDK, but you may need to install one (any) of the Android API levels for it to be installed in the SDK directory." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:43 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:47 msgid "Setting it up in Godot" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:45 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:49 msgid "Enter the Editor Settings screen. This screen contains the editor settings for the user account in the computer (it's independent from the project)." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:51 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:55 msgid "Scroll down to the section where the Android settings are located:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:55 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:59 msgid "In that screen, the path to 3 files needs to be set:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:57 -msgid "The *adb* executable (adb.exe on Windows)" -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:58 -msgid "The *jarsigner* executable (from JDK 6 or 8)" -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:59 -msgid "The debug *keystore*" -msgstr "" - #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:61 -msgid "Once that is configured, everything is ready to export to Android!" +msgid "The ``adb`` executable (``adb.exe`` on Windows) - It can usually be found at ``%LOCALAPPDATA%\\Android\\Sdk\\platform-tools\\adb.exe``." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:64 -msgid "Providing launcher icons" +msgid "The ``jarsigner`` executable (from JDK 6 or 8) - On Windows, OpenJDK installs to a dir like ``%PROGRAMFILES%\\ojdkbuild\\java-1.8.0-openjdk-1.8.0.232-2\\bin``. The exact path may vary depending on the OpenJDK update you've installed." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:66 -msgid "Launcher icons are used by Android launcher apps to represent your application to users. Godot only requires high-resolution icons (for ``xxxhdpi`` density screens) and will automatically generate lower-resolution variants." -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:68 -msgid "There are two types of icons required by Godot:" +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:67 +msgid "The debug ``.keystore`` file - It can be found in the folder where you put the ``debug.keystore`` file you created above." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:70 -msgid "**Main Icon:**: The \"classic\" icon. This will be used on all Android versions up to Android 8 (Oreo), exclusive. Must be at least 192×192 px." -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:71 -msgid "**Adaptive Icons:** Starting from Android 8 (inclusive), `Adaptive Icons `_ were introduced. Applications will need to include separate background and foreground icons to have a native look. The user's launcher application will control the icon's animation and masking. Must be at least 432×432 px." +msgid "Once that is configured, everything is ready to export to Android!" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:73 -msgid "It's important to adhere to some rules when designing adaptive icons. `Google Design has provided a nice article `_ that helps to understand those rules and some of the capabilities of adaptive icons." +msgid "Providing launcher icons" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:75 -msgid "The most important adaptive icon design rule is to have your icon critical elements inside the safe zone: a centered circle with a radius of 66dp (264 pixels on ``xxxhdpi``) to avoid being clipped by the launcher." +msgid "Launcher icons are used by Android launcher apps to represent your application to users. Godot only requires high-resolution icons (for ``xxxhdpi`` density screens) and will automatically generate lower-resolution variants." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:77 -msgid "If you don't provide some of the requested icons, Godot will replace them using a fallback chain, trying the next in line when the current one fails:" +msgid "There are two types of icons required by Godot:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:79 -msgid "**Main Icon:** Provided main icon -> Project icon -> Default Godot main icon." +msgid "**Main Icon:**: The \"classic\" icon. This will be used on all Android versions up to Android 8 (Oreo), exclusive. Must be at least 192×192 px." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:80 -msgid "**Adaptive Icon Foreground:** Provided foreground icon -> Provided main icon -> Project icon -> Default Godot foreground icon." +msgid "**Adaptive Icons:** Starting from Android 8 (inclusive), `Adaptive Icons `_ were introduced. Applications will need to include separate background and foreground icons to have a native look. The user's launcher application will control the icon's animation and masking. Must be at least 432×432 px." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:81 -msgid "**Adaptive Icon Background:** Provided background icon -> Default Godot background icon." +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:82 +msgid "It's important to adhere to some rules when designing adaptive icons. `Google Design has provided a nice article `_ that helps to understand those rules and some of the capabilities of adaptive icons." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:83 -msgid "It's highly recommended to provide all of the requested icons, and at least with the specified resolutions. Only this way your application will look great on all the Android devices and versions." +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:84 +msgid "The most important adaptive icon design rule is to have your icon critical elements inside the safe zone: a centered circle with a radius of 66dp (264 pixels on ``xxxhdpi``) to avoid being clipped by the launcher." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:86 -msgid "Exporting for Google Play Store" +msgid "If you don't provide some of the requested icons, Godot will replace them using a fallback chain, trying the next in line when the current one fails:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:88 -msgid "Uploading an APK to Google's Play Store requires you to sign using a non-debug keystore file; such file can be generated like this:" +msgid "**Main Icon:** Provided main icon -> Project icon -> Default Godot main icon." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:89 +msgid "**Adaptive Icon Foreground:** Provided foreground icon -> Provided main icon -> Project icon -> Default Godot foreground icon." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:90 +msgid "**Adaptive Icon Background:** Provided background icon -> Default Godot background icon." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:92 +msgid "It's highly recommended to provide all of the requested icons, and at least with the specified resolutions. Only this way your application will look great on all the Android devices and versions." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:95 -msgid "This keystore and key are used to verify your developer identity, remember the password and keep it in a safe place! Use Google's Android Developer guides to learn more about `APK signing `__." +msgid "Exporting for Google Play Store" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:98 -msgid "Now fill in the following forms in your Android Export Presets:" -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:102 -msgid "**Release:** Enter the path to the keystore file you just generated." -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:103 -msgid "**Release User:** Replace with the key alias." +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:97 +msgid "Uploading an APK to Google's Play Store requires you to sign using a non-debug keystore file; such file can be generated like this:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:104 +msgid "This keystore and key are used to verify your developer identity, remember the password and keep it in a safe place! Use Google's Android Developer guides to learn more about `APK signing `__." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:107 +msgid "Now fill in the following forms in your Android Export Presets:" +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:111 +msgid "**Release:** Enter the path to the keystore file you just generated." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:112 +msgid "**Release User:** Replace with the key alias." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:113 msgid "**Release Password:** Key password. Note that the keystore password and the key password currently have to be the same." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:106 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:115 msgid "**Your export_presets.cfg file now contains sensitive information.** If you use a version control system, you should remove it from public repositories and add it to your ``.gitignore`` file or equivalent." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:110 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:119 msgid "Don't forget to uncheck the **Export With Debug** checkbox while choosing the APK's name." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:115 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:124 msgid "Optimizing the APK size" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:117 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:126 msgid "By default, the APK will contain native libraries for both ARMv7 and ARMv8 architectures. This increases its size significantly. To create a smaller APK, uncheck either **Armeabi-v 7a** or **Arm 64 -v 8a** in your project's Android export preset. This will create an APK that only contains a library for a single architecture. Note that applications targeting ARMv7 can also run on ARMv8 devices, but the opposite is not true." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:124 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:133 msgid "Since August 2019, Google Play requires all applications to be available in 64-bit form. This means you cannot upload an APK that contains *just* an ARMv7 library. To solve this, you can upload several APKs to Google Play using its `Multiple APK support `__. Each APK should target a single architecture; creating an APK for ARMv7 and ARMv8 is usually sufficient to cover most devices in use today." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:131 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:140 msgid "You can optimize the size further by compiling an Android export template with only the features you need. See :ref:`doc_optimizing_for_size` for more information." msgstr "" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_ios.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_ios.pot index 269e3b584a..03c118000b 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_ios.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_ios.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_pc.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_pc.pot index fa27cec8c6..85da9d22bd 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_pc.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_pc.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_uwp.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_uwp.pot index e783258eda..e03d9c7700 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_uwp.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_uwp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_web.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_web.pot index 1399eecb9a..bb734ae888 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_web.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_web.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_pcks.pot b/sphinx/templates/getting_started/workflow/export/exporting_pcks.pot index fda05e02c8..6411da8ef0 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_pcks.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_pcks.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -165,10 +165,14 @@ msgid "If you import a file with the same file path/name as one you already have msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:124 +msgid "For a C# project, you need to build the DLL and place it in the project directory first. Then, before loading the resource pack, you need to load its DLL as follows: ``Assembly.LoadFile(\"mod.dll\")``" +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_pcks.rst:129 msgid "Summary" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_pcks.rst:126 +#: ../../docs/getting_started/workflow/export/exporting_pcks.rst:131 msgid "This tutorial should illustrate how easy adding mods, patches or DLC to a game is. The most important thing is to identify how one plans to distribute future content for their game and develop a workflow that is customized for that purpose. Godot should make that process smooth regardless of which route a developer pursues." msgstr "" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_projects.pot b/sphinx/templates/getting_started/workflow/export/exporting_projects.pot index 85f41fbac7..c3d1ab4dce 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_projects.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_projects.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/feature_tags.pot b/sphinx/templates/getting_started/workflow/export/feature_tags.pot index f3dd899674..87a27cbc04 100644 --- a/sphinx/templates/getting_started/workflow/export/feature_tags.pot +++ b/sphinx/templates/getting_started/workflow/export/feature_tags.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/index.pot b/sphinx/templates/getting_started/workflow/export/index.pot index 73cabb3938..cc47fdf2c6 100644 --- a/sphinx/templates/getting_started/workflow/export/index.pot +++ b/sphinx/templates/getting_started/workflow/export/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/one-click_deploy.pot b/sphinx/templates/getting_started/workflow/export/one-click_deploy.pot index 548bb22203..c78795b26e 100644 --- a/sphinx/templates/getting_started/workflow/export/one-click_deploy.pot +++ b/sphinx/templates/getting_started/workflow/export/one-click_deploy.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/index.pot b/sphinx/templates/getting_started/workflow/index.pot index 557b3bc8dd..02b5b5cce3 100644 --- a/sphinx/templates/getting_started/workflow/index.pot +++ b/sphinx/templates/getting_started/workflow/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/project_setup/index.pot b/sphinx/templates/getting_started/workflow/project_setup/index.pot index ded19d545c..5ce7b8b92d 100644 --- a/sphinx/templates/getting_started/workflow/project_setup/index.pot +++ b/sphinx/templates/getting_started/workflow/project_setup/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/project_setup/project_organization.pot b/sphinx/templates/getting_started/workflow/project_setup/project_organization.pot index ccbea83000..7f24292f9b 100644 --- a/sphinx/templates/getting_started/workflow/project_setup/project_organization.pot +++ b/sphinx/templates/getting_started/workflow/project_setup/project_organization.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/index.pot b/sphinx/templates/index.pot index e51ddc5885..fdd8007df7 100644 --- a/sphinx/templates/index.pot +++ b/sphinx/templates/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot b/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot index 5139fbaf93..4f8661bc19 100644 --- a/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot +++ b/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,7 +41,7 @@ msgid "For this demo we use four textures: two for the lights, one for the shado msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:28 -msgid "The first is the background image (`bg.png `_) used in the demo. You do not necessarily need a background, but we use one for the demo." +msgid "The first is the background image (`background.png `_) used in the demo. You do not necessarily need a background, but we use one for the demo." msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:31 @@ -153,7 +153,7 @@ msgid "Now that we have covered the basics of the nodes being used, we can now w msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:113 -msgid "First add a :ref:`Sprite ` and set its texture to the `background image `_. For your game this can be any background you choose. For this style of shadow it is most likely to be a floor texture." +msgid "First add a :ref:`Sprite ` and set its texture to the `background image `_. For your game this can be any background you choose. For this style of shadow it is most likely to be a floor texture." msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:118 diff --git a/sphinx/templates/tutorials/2d/2d_meshes.pot b/sphinx/templates/tutorials/2d/2d_meshes.pot index 79a70f9bd4..30185cdba1 100644 --- a/sphinx/templates/tutorials/2d/2d_meshes.pot +++ b/sphinx/templates/tutorials/2d/2d_meshes.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/2d_movement.pot b/sphinx/templates/tutorials/2d/2d_movement.pot index bf717ef774..85fc26172e 100644 --- a/sphinx/templates/tutorials/2d/2d_movement.pot +++ b/sphinx/templates/tutorials/2d/2d_movement.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/2d_sprite_animation.pot b/sphinx/templates/tutorials/2d/2d_sprite_animation.pot index 221a22ddff..1c907fbed7 100644 --- a/sphinx/templates/tutorials/2d/2d_sprite_animation.pot +++ b/sphinx/templates/tutorials/2d/2d_sprite_animation.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,15 +25,15 @@ msgid "Introduction" msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:9 -msgid "In this tutorial, you'll learn two different ways to create 2D animated characters. Typically, when you create or download an animated character, it will come in one of two ways: as individual images or as a single sprite sheet containing all the animation's frames. Depending on which type of assets you have, you can choose one of the following solutions." +msgid "In this tutorial, you'll learn how to create 2D animated characters with the AnimatedSprite class and the AnimationPlayer. Typically, when you create or download an animated character, it will come in one of two ways: as individual images or as a single sprite sheet containing all the animation's frames. Both can be animated in Godot with the AnimatedSprite class." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:15 -msgid "First, we'll use :ref:`AnimatedSprite ` to animate a collection of individual images. Then, to use a sprite sheet, we'll use :ref:`AnimationPlayer ` along with the *Animation* property of :ref:`Sprite `." +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:14 +msgid "First, we'll use :ref:`AnimatedSprite ` to animate a collection of individual images. Then we will animate a sprite sheet using this class. Finally, we will learn another way to animate a sprite sheet with :ref:`AnimationPlayer ` and the *Animation* property of :ref:`Sprite `." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:20 -msgid "Art for the following examples by https://opengameart.org/users/ansimuz" +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:19 +msgid "Art for the following examples by https://opengameart.org/users/ansimuz and by https://opengameart.org/users/tgfcoder" msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:23 @@ -53,7 +53,7 @@ msgid "Unzip the images and place them in your project folder. Set up your scene msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:39 -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:109 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:143 msgid "The root node could also be :ref:`Area2D ` or :ref:`RigidBody2D `. The animation will still be made in the same way. Once the animation is completed, you can assign a shape to the CollisionShape2D. See :ref:`Physics Introduction ` for more information." msgstr "" @@ -86,66 +86,106 @@ msgid "Once the animation is complete, you can control the animation via code us msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:90 -msgid "Sprite sheet with AnimationPlayer" +msgid "Sprite sheet with AnimatedSprite" msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:92 -msgid "In the event you have a sprite sheet containing all of your animation frames, you can't easily use ``AnimatedSprite``. Instead, you can use a standard :ref:`Sprite ` node to display the texture, and then animate the change from texture to texture with :ref:`AnimationPlayer `." +msgid "You can also easily animate from a sprite sheet with the class ``AnimatedSprite``. We will use this public domain sprite sheet:" msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:97 -msgid "Consider this sprite sheet, which contains 6 frames of animation:" +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:96 +msgid "Right-click the image and choose \"Save Image As\" to download it, and then copy the image into your project folder." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:98 +msgid "Set up your scene tree the same way you did previously when using individual images. Select the ``AnimatedSprite`` and in its *SpriteFrames* property, select \"New SpriteFrames\"." msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:101 +msgid "Click on the new SpriteFrames resource. This time, when the bottom panel appears, select \"Add frames from a Sprite Sheet\"." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:105 +msgid "You will be prompted to open a file. Select your sprite sheet." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:107 +msgid "A new window will open, showing your sprite sheet. The first thing you will need to do is to change the number of vertical and horizontal images in your sprite sheet. In this sprite sheet, we have four images horizontally and two images vertically." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:111 +msgid "Next, select the frames from the sprite sheet that you want to include in your animation. We will select the top four, then click \"Add 4 frames\" to create the animation." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:115 +msgid "You will now see your animation under the list of animations in the bottom panel. Double click on default to change the name of the animation to jump." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:119 +msgid "Finally, check Playing on the AnimatedSprite in the inspector to see your frog jump!" +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:125 +msgid "Sprite sheet with AnimationPlayer" +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:127 +msgid "Another way that you can animate when using a sprite sheet is to use a standard :ref:`Sprite ` node to display the texture, and then animating the change from texture to texture with :ref:`AnimationPlayer `." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:131 +msgid "Consider this sprite sheet, which contains 6 frames of animation:" +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:135 msgid "Right-click the image and choose \"Save Image As\" to download, then copy the image into your project folder." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:104 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:138 msgid "Our goal is to display these images one after another in a loop. Start by setting up your scene tree:" msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:116 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:150 msgid "Drag the spritesheet into the Sprite's *Texture* property, and you'll see the whole sheet displayed on the screen. To slice it up into individual frames, expand the *Animation* section in the Inspector and set the *Hframes* to ``6``. *Hframes* and *Vframes* are the number of horizontal and vertical frames in your sprite sheet." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:124 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:158 msgid "Now try changing the value of the *Frame* property. You'll see that it ranges from ``0`` to ``5`` and the image displayed by the Sprite changes accordingly. This is the property we'll be animating." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:128 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:162 msgid "Select the ``AnimationPlayer`` and click the \"Animation\" button followed by \"New\". Name the new animation \"walk\". Set the animation length to ``0.6`` and click the \"Loop\" button so that our animation will repeat." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:134 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:168 msgid "Now select the ``Sprite`` node and click the key icon to add a new track." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:138 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:172 msgid "Continue adding frames at each point in the timeline (``0.1`` seconds by default), until you have all the frames from 0 to 5. You'll see the frames actually appearing in the animation track:" msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:144 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:178 msgid "Press \"Play\" on the animation to see how it looks." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:149 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:183 msgid "Controlling an AnimationPlayer animation" msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:151 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:185 msgid "Like with AnimatedSprite, you can control the animation via code using the ``play()`` and ``stop()`` methods. Again, here is an example to play the animation while the right arrow key is held, and stop it when the key is released." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:168 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:202 msgid "If updating both an animation and a separate property at once (for example, a platformer may update the sprite's ``h_flip``/``v_flip`` properties when a character turns while starting a 'turning' animation), it's important to keep in mind that ``play()`` isn't applied instantly. Instead, it's applied the next time the :ref:`AnimationPlayer ` is processed. This may end up being on the next frame, causing a 'glitch' frame, where the property change was applied but the animation was not. If this turns out to be a problem, after calling ``play()``, you can call ``advance(0)`` to update the animation immediately." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:179 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:213 msgid "Summary" msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:181 -msgid "These examples illustrate the two most common situations you'll encounter in 2D animation. Each has its benefits. Working with ``AnimationPlayer`` is a bit more complex, but provides additional functionality, since you can also animate other properties like position or scale. Experiment and see which works best for your needs." +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:215 +msgid "These examples illustrate the two classes you can use in Godot for 2D animation. ``AnimationPlayer`` is a bit more complex than ``AnimatedSprite``, but it provides additional functionality, since you can also animate other properties like position or scale. The class ``AnimationPlayer`` can also be used with an ``AnimatedSprite``. Experiment to see what works best for your needs." msgstr "" diff --git a/sphinx/templates/tutorials/2d/2d_transforms.pot b/sphinx/templates/tutorials/2d/2d_transforms.pot index 9c1a92631b..9b35765915 100644 --- a/sphinx/templates/tutorials/2d/2d_transforms.pot +++ b/sphinx/templates/tutorials/2d/2d_transforms.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/canvas_layers.pot b/sphinx/templates/tutorials/2d/canvas_layers.pot index 7b7258527d..17576bbccc 100644 --- a/sphinx/templates/tutorials/2d/canvas_layers.pot +++ b/sphinx/templates/tutorials/2d/canvas_layers.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot b/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot index 9c19e5b9d1..20b7f07360 100644 --- a/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot +++ b/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/index.pot b/sphinx/templates/tutorials/2d/index.pot index 27f34550ea..1b5e6beed9 100644 --- a/sphinx/templates/tutorials/2d/index.pot +++ b/sphinx/templates/tutorials/2d/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/particle_systems_2d.pot b/sphinx/templates/tutorials/2d/particle_systems_2d.pot index 58572cfc0a..90bcd9ccd0 100644 --- a/sphinx/templates/tutorials/2d/particle_systems_2d.pot +++ b/sphinx/templates/tutorials/2d/particle_systems_2d.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/using_tilemaps.pot b/sphinx/templates/tutorials/2d/using_tilemaps.pot index 7d00c822aa..463b64b0cb 100644 --- a/sphinx/templates/tutorials/2d/using_tilemaps.pot +++ b/sphinx/templates/tutorials/2d/using_tilemaps.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -185,7 +185,7 @@ msgid "You can flip and rotate tiles using the icons at the top right of the edi msgstr "" #: ../../docs/tutorials/2d/using_tilemaps.rst:162 -msgid "To draw straight lines, hold while clicking and dragging a tile." +msgid "To draw straight lines, hold :kbd:`Shift` while clicking and dragging a tile." msgstr "" #: ../../docs/tutorials/2d/using_tilemaps.rst:164 diff --git a/sphinx/templates/tutorials/3d/3d_performance_and_limitations.pot b/sphinx/templates/tutorials/3d/3d_performance_and_limitations.pot index 4968c385e7..13a224474f 100644 --- a/sphinx/templates/tutorials/3d/3d_performance_and_limitations.pot +++ b/sphinx/templates/tutorials/3d/3d_performance_and_limitations.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/baked_lightmaps.pot b/sphinx/templates/tutorials/3d/baked_lightmaps.pot index a4fde8a5ce..69c2b3a779 100644 --- a/sphinx/templates/tutorials/3d/baked_lightmaps.pot +++ b/sphinx/templates/tutorials/3d/baked_lightmaps.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/csg_tools.pot b/sphinx/templates/tutorials/3d/csg_tools.pot index 9d30346bcb..73c9fc4ff1 100644 --- a/sphinx/templates/tutorials/3d/csg_tools.pot +++ b/sphinx/templates/tutorials/3d/csg_tools.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/environment_and_post_processing.pot b/sphinx/templates/tutorials/3d/environment_and_post_processing.pot index f84b72708f..517dfd86f5 100644 --- a/sphinx/templates/tutorials/3d/environment_and_post_processing.pot +++ b/sphinx/templates/tutorials/3d/environment_and_post_processing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/index.pot b/sphinx/templates/tutorials/3d/fps_tutorial/index.pot index afb4eccea9..443e249af7 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/index.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_five.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_five.pot index abbcdea08e..725c50962c 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_five.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_five.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_four.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_four.pot index 3265425683..fc802aff1e 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_four.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_four.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_one.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_one.pot index c0b36896df..b8ea469dc0 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_one.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_one.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -466,7 +466,7 @@ msgid "Here is what the :ref:`Spatial ` gizmo shows when you are msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:569 -msgid "You can change between local and world space modes by pressing T or the little cube button when you have a :ref:`Spatial ` based node selected." +msgid "You can change between local and world space modes by pressing :kbd:`T` or the little cube button when you have a :ref:`Spatial ` based node selected." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:574 @@ -614,7 +614,7 @@ msgid "To test the code, open up the scene named ``Testing_Area.tscn``, if it's msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:683 -msgid "Go ahead and test your code either by pressing ``F6`` with ``Testing_Area.tscn`` as the open tab, by pressing the play button in the top right corner, or by pressing ``F5``. You should now be able to walk around, jump in the air, and look around using the mouse." +msgid "Go ahead and test your code either by pressing :kbd:`F6` with ``Testing_Area.tscn`` as the open tab, by pressing the play button in the top right corner, or by pressing :kbd:`F5`. You should now be able to walk around, jump in the air, and look around using the mouse." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:689 @@ -682,7 +682,7 @@ msgid "Now, when the player is sprinting, we'll use ``SPRINT_ACCEL`` instead of msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:832 -msgid "You should now be able to sprint if you press the ``shift`` button, and can toggle the flash light on and off by pressing the ``F`` button!" +msgid "You should now be able to sprint if you press :kbd:`Shift`, and can toggle the flash light on and off by pressing :kbd:`F`!" msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:834 diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_six.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_six.pot index e8ce538966..1c24ce5661 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_six.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_six.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_three.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_three.pot index 8121037d71..cc09577778 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_three.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_three.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -48,524 +48,524 @@ msgstr "" msgid "Open up ``Space_Level.tscn`` (``assets/Space_Level_Objects/Space_Level.tscn``) and/or ``Ruins_Level.tscn`` (``assets/Ruin_Level_Objects/Ruins_Level.tscn``)." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:28 -msgid "``Space_Level.tscn`` and ``Ruins_Level.tscn`` are complete custom FPS levels created for the purpose of this tutorial. Press ``F6`` to play the open scene, or press the ``play current scene button``, and give each a try." +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:29 +msgid "``Space_Level.tscn`` and ``Ruins_Level.tscn`` are complete custom FPS levels created for the purpose of this tutorial. Press ``Play Current Scene`` button, or :kbd:`F6` on keyboard, and give each a try." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:31 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:33 msgid "``Space_Level.tscn`` is more graphically demanding of the GPU than ``Ruins_Level.tscn``. If your computer is struggling to render ``Space_Level.tscn``, try using ``Ruins_Level.tscn`` instead." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:34 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:36 msgid "You might have noticed there are several :ref:`RigidBody ` nodes placed throughout the level. We can place ``RigidBody_hit_test.gd`` on them and then they will react to being hit with bullets, so let's do that!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:37 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:39 msgid "Follow the instructions below for either (or both) of the scenes you want to use" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:73 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:75 msgid "Now you can fire at all the rigid bodies in either level and they will react to bullets hitting them!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:76 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:78 msgid "Adding ammo" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:78 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:80 msgid "Now that the player has working guns, let's give them a limited amount of ammo." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:80 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:82 msgid "Firstly, we need to define a few variables in each of our weapon scripts." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:82 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:191 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:84 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:193 msgid "Open up ``Weapon_Pistol.gd`` and add the following class variables:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:90 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:92 msgid "``ammo_in_weapon``: The amount of ammo currently in the pistol" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:91 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:93 msgid "``spare_ammo``: The amount of ammo we have left in reserve for the pistol" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:92 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:94 msgid "``AMMO_IN_MAG``: The amount of ammo in a fully reloaded weapon/magazine" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:94 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:96 msgid "Now all we need to do is add a single line of code to ``fire_weapon``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:96 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:98 msgid "Add the following right under ``Clone.BULLET_DAMAGE = DAMAGE``: ``ammo_in_weapon -= 1``" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:98 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:100 msgid "This will remove one from ``ammo_in_weapon`` every time the player fires. Notice we're not checking to see if the player has enough ammo or not in ``fire_weapon``. Instead, we're going to check to see if the player has enough ammo in ``Player.gd``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:103 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:105 msgid "Now we need to add ammo for both the rifle and the knife." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:105 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:107 msgid "You may be wondering why we are adding ammo for the knife given it does not consume any ammunition. The reason we want to add ammo to the knife is so we have a consistent interface for all our weapons." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:108 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:110 msgid "If we did not add ammo variables for the knife, we would have to add checks for the knife. By adding the ammo variables to the knife, we don't need to worry about whether or not all our weapons have the same variables." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:111 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:113 msgid "Add the following class variables to ``Weapon_Rifle.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:119 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:121 msgid "And then add the following to ``fire_weapon``: ``ammo_in_weapon -= 1``. Make sure that ``ammo_in_weapon -= 1`` is outside of the ``if ray.is_colliding()`` check so the player loses ammo regardless of whether the player hit something or not." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:122 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:124 msgid "Now all that's left is the knife. Add the following to ``Weapon_Knife.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:130 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:132 msgid "Because the knife does not consume ammo, that is all we need to add." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:134 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:136 msgid "Now we need to change one thing in ``Player.gd``, that is to say," msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:136 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:138 msgid "how we're firing the weapons in ``process_input``. Change the code for firing weapons to the following:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:151 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:153 msgid "Now the weapons have a limited amount of ammo, and will stop firing when the player runs out." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:155 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:157 msgid "Ideally, we'd like to let the player be able to see how much ammo is left. Let's make a new function called ``process_UI``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:157 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:159 msgid "First, add ``process_UI(delta)`` to ``_physics_process``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:159 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:161 msgid "Now add the following to ``Player.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:171 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:233 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:173 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:235 msgid "Let's go over what's happening:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:173 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:175 msgid "Firstly, we check to see if the current weapon is either ``UNARMED`` or ``KNIFE``. If it is, we change the ``UI_status_label``'s text to only show the player's health since ``UNARMED`` and ``KNIFE`` do not consume ammo." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:176 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:178 msgid "If the player is using a weapon that consumes ammo, we first get the weapon node." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:178 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:180 msgid "Then we change ``UI_status_label``'s text to show the player's health, along with how much ammo the player has in the weapon and how much spare ammo the player has for that weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:182 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:184 msgid "Now we can see how much ammo the player has through the HUD." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:185 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:187 msgid "Adding reloading to the weapons" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:187 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:189 msgid "Now that the player can run out of ammo, we need a way to let the player fill them back up. Let's add reloading next!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:189 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:191 msgid "For reloading, we need to add a few more variables and a function to every weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:200 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:202 msgid "``CAN_RELOAD``: A boolean to track whether this weapon has the ability to reload" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:201 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:203 msgid "``CAN_REFILL``: A boolean to track whether we can refill this weapon's spare ammo. We will not be using ``CAN_REFILL`` in this part, but we will in the next part!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:202 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:204 msgid "``RELOADING_ANIM_NAME``: The name of the reloading animation for this weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:204 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:206 msgid "Now we need to add a function for handling reloading. Add the following function to ``Weapon_Pistol.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:235 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:237 msgid "First we define a variable to see whether or not this weapon can reload." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:237 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:239 msgid "Then we check to see if the player is in this weapon's idle animation state because we only want to be able to reload when the player is not firing, equipping, or unequipping." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:240 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:242 msgid "Next we check to see if the player has spare ammo, and if the ammo already in the weapon is equal to a fully reloaded weapon. This way we can ensure the player cannot reload when the player has no ammo or when the weapon is already full of ammo." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:243 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:245 msgid "If we can still reload, then we calculate the amount of ammo needed to reload the weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:245 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:247 msgid "If the player has enough ammo to fill the weapon, we remove the ammo needed from ``spare_ammo`` and then set ``ammo_in_weapon`` to a full weapon/magazine." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:247 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:249 msgid "If the player does not have enough ammo, we add all the ammo left in ``spare_ammo``, and then set ``spare_ammo`` to ``0``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:249 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:251 msgid "Next we play the reloading animation for this weapon, and then return ``true``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:251 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:253 msgid "If the player could not reload, we return ``false``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:255 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:257 msgid "Now we need to add reloading to the rifle. Open up ``Weapon_Rifle.gd`` and add the following class variables:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:264 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:266 msgid "These variables are exactly the same as the pistol, just with ``RELOADING_ANIM_NAME`` changed to the rifle's reloading animation." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:266 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:268 msgid "Now we need to add ``reload_weapon`` to ``Weapon_Rifle.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:295 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:297 msgid "This code is exactly the same as the one for the pistol." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:299 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:301 msgid "The last bit we need to do for the weapons is add 'reloading' to the knife. Add the following class variables to ``Weapon_Knife.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:308 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:310 msgid "Since we both cannot reload or refill a knife, we set both constants to ``false``. We also define ``RELOADING_ANIM_NAME`` as an empty string, since the knife has no reloading animation." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:311 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:313 msgid "Now we need to add ``reloading_weapon``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:318 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:320 msgid "Since we cannot reload a knife, we always return ``false``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:321 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:323 msgid "Adding reloading to the player" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:323 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:325 msgid "Now we need to add a few things to ``Player.gd``. First we need to define a new class variable:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:329 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:331 msgid "``reloading_weapon``: A variable to track whether or not the player is currently trying to reload." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:332 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:334 msgid "Next we need to add another function call to ``_physics_process``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:334 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:336 msgid "Add ``process_reloading(delta)`` to ``_physics_process``. Now ``_physics_process`` should look something like this:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:345 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:347 msgid "Now we need to add ``process_reloading``. Add the following function to ``Player.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:356 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:407 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:358 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:409 msgid "Let's go over what's happening here." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:358 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:360 msgid "Firstly, we check to make sure the player is trying to reload." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:360 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:362 msgid "If the player is trying to reload, we then get the current weapon. If the current weapon does not equal ``null``, we call its ``reload_weapon`` function." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:362 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:364 msgid "If the current weapon is equal to ``null``, then the current weapon is ``UNARMED``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:364 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:366 msgid "Finally, we set ``reloading_weapon`` to ``false`` because, regardless of whether the player successfully reloaded, we've tried reloading and no longer need to keep trying." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:369 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:371 msgid "Before we can let the player reload, we need to change a few things in ``process_input``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:371 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:373 msgid "The first thing we need to change is in the code for changing weapons. We need to add an additional check (``if reloading_weapon == false:``) to see if the player is reloading:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:382 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:384 msgid "This makes it so the player cannot change weapons if the player is reloading." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:384 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:386 msgid "Now we need to add the code to trigger a reload when the player pushes the ``reload`` action. Add the following code to ``process_input``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:409 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:411 msgid "First we make sure the player is not reloading already, nor is the player trying to change weapons." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:411 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:413 msgid "Then we check to see if the ``reload`` action has been pressed." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:413 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:415 msgid "If the player has pressed ``reload``, we then get the current weapon and check to make sure it is not ``null``. Then we check to see whether the weapon can reload or not using its ``CAN_RELOAD`` constant." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:416 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:418 msgid "If the weapon can reload, we then get the current animation state, and make a variable for tracking whether the player is already reloading or not." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:418 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:420 msgid "We then go through every weapon to make sure the player is not already playing that weapon's reloading animation." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:420 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:422 msgid "If the player is not reloading any weapon, we set ``reloading_weapon`` to ``true``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:424 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:426 msgid "One thing I like to add is where the weapon will reload itself if you try to fire it and it's out of ammo." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:426 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:428 msgid "We also need to add an additional if check (``is_reloading_weapon == false:``) so the player cannot fire the current weapon while reloading." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:429 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:431 msgid "Let's change our firing code in ``process_input`` so it reloads when trying to fire an empty weapon:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:447 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:449 msgid "Now we check to make sure the player is not reloading before we fire the weapon, and when we have ``0`` or less ammo in the current weapon, we set ``reloading_weapon`` to ``true`` if the player tries to fire." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:450 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:452 msgid "This will make it so the player will try to reload when attempting to fire an empty weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:454 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:456 msgid "With that done, the player can now reload! Give it a try! Now you can fire all the spare ammo for each weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:457 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:459 msgid "Adding sounds" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:459 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:461 msgid "Finally, let's add some sounds that accompany the player firing, reloading and changing weapons." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:461 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:463 msgid "There are no game sounds provided in this tutorial (for legal reasons). https://gamesounds.xyz/ is a collection of **\"royalty free or public domain music and sounds suitable for games\"**. I used Gamemaster's Gun Sound Pack, which can be found in the Sonniss.com GDC 2017 Game Audio Bundle." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:465 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:467 msgid "Open up ``Simple_Audio_Player.tscn``. It is simply a :ref:`Spatial ` with an :ref:`AudioStreamPlayer ` as its child." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:467 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:469 msgid "The reason this is called a 'simple' audio player is because we are not taking performance into account and because the code is designed to provide sound in the simplest way possible." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:470 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:472 msgid "If you want to use 3D audio, so it sounds like it's coming from a location in 3D space, right click the :ref:`AudioStreamPlayer ` and select \"Change type\"." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:473 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:475 msgid "This will open the node browser. Navigate to :ref:`AudioStreamPlayer3D ` and select \"change\". In the source for this tutorial, we will be using :ref:`AudioStreamPlayer `, but you can optionally use :ref:`AudioStreamPlayer3D ` if you desire, and the code provided below will work regardless of which one you chose." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:478 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:480 msgid "Create a new script and call it ``Simple_Audio_Player.gd``. Attach it to the :ref:`Spatial ` in ``Simple_Audio_Player.tscn`` and insert the following code:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:530 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:532 msgid "By setting ``position`` to ``null`` by default in ``play_sound``, we are making it an optional argument, meaning ``position`` doesn't necessarily have to be passed in to call ``play_sound``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:533 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:535 msgid "Let's go over what's happening here:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:537 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:539 msgid "In ``_ready``, we get the :ref:`AudioStreamPlayer ` and connect its ``finished`` signal to the ``destroy_self`` function. It doesn't matter if it's an :ref:`AudioStreamPlayer ` or :ref:`AudioStreamPlayer3D ` node, as they both have the finished signal. To make sure it is not playing any sounds, we call ``stop`` on the :ref:`AudioStreamPlayer `." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:541 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:543 msgid "Make sure your sound files are **not** set to loop! If it is set to loop, the sounds will continue to play infinitely and the script will not work!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:544 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:546 msgid "The ``play_sound`` function is what we will be calling from ``Player.gd``. We check if the sound is one of the three possible sounds, and if it is one of the three sounds we set the audio stream in :ref:`AudioStreamPlayer ` to the correct sound." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:548 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:550 msgid "If it is an unknown sound, we print an error message to the console and free the audio player." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:550 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:552 msgid "If you are using an :ref:`AudioStreamPlayer3D `, remove the ``#`` to set the position of the audio player node so it plays at the correct position." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:553 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:555 msgid "Finally, we tell the :ref:`AudioStreamPlayer ` to play." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:555 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:557 msgid "When the :ref:`AudioStreamPlayer ` is finished playing the sound, it will call ``destroy_self`` because we connected the ``finished`` signal in ``_ready``. We stop the :ref:`AudioStreamPlayer ` and free the audio player to save on resources." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:559 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:561 msgid "This system is extremely simple and has some major flaws:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:561 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:563 msgid "One flaw is we have to pass in a string value to play a sound. While it is relatively simple to remember the names of the three sounds, it can be increasingly complex when you have more sounds. Ideally, we'd place these sounds in some sort of container with exposed variables so we do not have to remember the name(s) of each sound effect we want to play." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:566 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:568 msgid "Another flaw is we cannot play looping sounds effects, nor background music, easily with this system. Because we cannot play looping sounds, certain effects, like footstep sounds, are harder to accomplish because we then have to keep track of whether or not there is a sound effect and whether or not we need to continue playing it." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:571 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:573 msgid "One of the biggest flaws with this system is we can only play sounds from ``Player.gd``. Ideally we'd like to be able to play sounds from any script at any time." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:576 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:578 msgid "With that done, let's open up ``Player.gd`` again. First we need to load the ``Simple_Audio_Player.tscn``. Place the following code in the class variables section of the script:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:583 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:585 msgid "Now we need to instance the simple audio player when we need it, and then call its ``play_sound`` function and pass the name of the sound we want to play. To make the process simpler, let's create a ``create_sound`` function in ``Player.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:595 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:597 msgid "Let's walk through what this function does:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:599 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:601 msgid "The first line instances the ``Simple_Audio_Player.tscn`` scene and assigns it to a variable named ``audio_clone``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:602 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:604 msgid "The second line gets the scene root, and this has a large (though safe) assumption." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:604 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:606 msgid "We first get this node's :ref:`SceneTree `, and then access the root node, which in this case is the :ref:`Viewport ` this entire game is running under. Then we get the first child of the :ref:`Viewport `, which in our case happens to be the root node in ``Test_Area.tscn`` or any of the other provided levels. **We are making a huge assumption that the first child of the root node is the root scene that the player is under, which may not always be the case**." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:610 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:612 msgid "If this doesn't make sense to you, don't worry too much about it. The second line of code only does not work reliably if you have multiple scenes loaded as children of the root node at a time, which will rarely happen for most projects and will not be happening in this tutorial series. This is only potentially a issue depending on how you handle scene loading." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:614 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:616 msgid "The third line adds our newly created ``Simple_Audio_Player`` scene to be a child of the scene root. This works exactly the same as when we are spawning bullets." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:617 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:619 msgid "Finally, we call the ``play_sound`` function and pass in the arguments passed in to ``create_sound``. This will call ``Simple_Audio_Player.gd``'s ``play_sound`` function with the passed in arguments." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:622 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:624 msgid "Now all that is left is playing the sounds when we want to. Let's add sound to the pistol first!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:624 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:626 msgid "Open up ``Weapon_Pistol.gd``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:626 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:628 msgid "Now, we want to make a noise when the player fires the pistol, so add the following to the end of the ``fire_weapon`` function:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:632 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:634 msgid "Now when the player fires the pistol, we'll play the ``Pistol_shot`` sound." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:634 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:656 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:636 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:658 msgid "To make a sound when the player reloads, we need to add the following right under ``player_node.animation_manager.set_animation(RELOADING_ANIM_NAME)`` in the ``reload_weapon`` function:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:641 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:663 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:643 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:665 msgid "Now when the player reloads, we'll play the ``Gun_cock`` sound." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:645 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:647 msgid "Now let's add sounds to the rifle. Open up ``Weapon_Rifle.gd``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:648 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:650 msgid "To play sounds when the rifle is fired, add the following to the end of the ``fire_weapon`` function:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:654 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:656 msgid "Now when the player fires the rifle, we'll play the ``Rifle_shot`` sound." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:666 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:668 msgid "Final notes" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:670 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:672 msgid "Now you have weapons with limited ammo that play sounds when you fire them!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:672 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:674 msgid "At this point, we have all the basics of an FPS game working. There are still a few things that would be nice to add, and we're going to add them in the next three parts!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:675 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:677 msgid "For example, right now we have no way to add ammo to our spares, so we'll eventually run out. Also, we don't have anything to shoot at outside of the :ref:`RigidBody ` nodes." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:678 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:680 msgid "In :ref:`doc_fps_tutorial_part_four` we'll add some targets to shoot at, along with some health and ammo pick ups! We're also going to add joypad support, so we can play with wired Xbox 360 controllers!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:681 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:683 msgid "If you ever get lost, be sure to read over the code again!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:683 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:685 msgid "You can download the finished project for this part here: :download:`Godot_FPS_Part_3.zip `" msgstr "" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_two.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_two.pot index 8edc4957d7..c8349b7c3f 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_two.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_two.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -249,7 +249,7 @@ msgid "Also, the muzzle of a gun is the end point where the bullet comes out. Th msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:303 -msgid "For finer control when scrubbing the timeline, press ``control`` and scroll forward with the mouse wheel to zoom in. Scrolling backwards will zoom out." +msgid "For finer control when scrubbing the timeline, press :kbd:`Ctrl` and scroll forward with the mouse wheel to zoom in. Scrolling backwards will zoom out." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:306 @@ -257,7 +257,7 @@ msgid "You can also change how the timeline scrubbing snaps by changing the valu msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:308 -msgid "Once you get to a point you like, right click on the row for \"Animation Player\" and press insert key. In the empty name field, enter ``animation_callback`` and press ``enter``." +msgid "Once you get to a point you like, right click on the row for \"Animation Player\" and press ``Insert Key``. In the empty name field, enter ``animation_callback`` and press :kbd:`Enter`." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:314 @@ -277,7 +277,7 @@ msgid "Go to the \"Rifle_fire\" animation from the animation drop down. Add the msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:327 -msgid "Type \"animation_callback\" into the name field of the pop up which opened and press ``enter``." +msgid "Type \"animation_callback\" into the name field of the pop up which opened and press :kbd:`Enter`." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:329 @@ -289,7 +289,7 @@ msgid "We will not actually be firing the knife, and the animation is a stabbing msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:337 -msgid "From there right click on the timeline and click \"Insert Key\". Put \"animation_callback\" into the name field and press ``enter``." +msgid "From there right click on the timeline and click \"Insert Key\". Put \"animation_callback\" into the name field and press :kbd:`Enter`." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:339 @@ -313,7 +313,7 @@ msgid "One of the two ways is using a bullet object. This will be an object that msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:356 -msgid "There are several advantages to this method. The first being we do not have to store the bullets in our player. We can simply create the bullet and then move on, and the bullet itself with handle checking for collisions, sending the proper signal(s) to the object it collides with, and destroying itself." +msgid "There are several advantages to this method. The first being we do not have to store the bullets in our player. We can simply create the bullet and then move on, and the bullet itself will handle checking for collisions, sending the proper signal(s) to the object it collides with, and destroying itself." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:359 @@ -1073,7 +1073,7 @@ msgid "Open up ``Testing_Area.tscn`` and select all the cubes parented to the `` msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:1219 -msgid "If you select the top cube, and then hold down ``shift`` and select the last cube, Godot will select all the cubes in-between!" +msgid "If you select the top cube, and then hold down :kbd:`Shift` and select the last cube, Godot will select all the cubes in-between!" msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:1222 diff --git a/sphinx/templates/tutorials/3d/gi_probes.pot b/sphinx/templates/tutorials/3d/gi_probes.pot index b46d5f21a9..61c2a2b782 100644 --- a/sphinx/templates/tutorials/3d/gi_probes.pot +++ b/sphinx/templates/tutorials/3d/gi_probes.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/high_dynamic_range.pot b/sphinx/templates/tutorials/3d/high_dynamic_range.pot index b94f57f37c..bde8995dff 100644 --- a/sphinx/templates/tutorials/3d/high_dynamic_range.pot +++ b/sphinx/templates/tutorials/3d/high_dynamic_range.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,7 +41,7 @@ msgid "The display has a limited range of intensity, depending on the display ty msgstr "" #: ../../docs/tutorials/3d/high_dynamic_range.rst:27 -msgid "This means that some transformation of the scene light intensity, also known as scene-referred light ratios, need to be transformed and mapped to fit within the particular output range of the chosen display. This can be most easily understood if we consider virtually photographing our game engine scene through a virtual camera. Here, our virtual camera would apply a particular camera rendering transform to the scene data, and the output would be ready for display on a particular display type." +msgid "This means that some transformation of the scene light intensity, also known as *scene-referred* light ratios, need to be transformed and mapped to fit within the particular output range of the chosen display. This can be most easily understood if we consider virtually photographing our game engine scene through a virtual camera. Here, our virtual camera would apply a particular camera rendering transform to the scene data, and the output would be ready for display on a particular display type." msgstr "" #: ../../docs/tutorials/3d/high_dynamic_range.rst:36 @@ -57,62 +57,62 @@ msgid "For a majority of computer displays, the specifications of the display ar msgstr "" #: ../../docs/tutorials/3d/high_dynamic_range.rst:50 -msgid "Not all displays use the same OETF and EOTF as a computer display however, for example, television broadcast displays use the BT.1886 EOTF. It should be noted that Godot is limited in its pixel management chain, and only supports sRGB displays currently." +msgid "Not all displays use the same OETF and EOTF as a computer display. For example, television broadcast displays use the BT.1886 EOTF. However, Godot currently only supports sRGB displays." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:55 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:54 msgid "The sRGB standard is based around the nonlinear relationship between the current to light output of common desktop computing CRT displays." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:60 -msgid "The mathematics of a scene referred model require that we multiply the scene by different values to adjust the intensities and exposure to different light ranges. The transfer function of the display cannot appropriately render the wider dynamic range of the game engine's scene output using the simple transfer function of the display however, and therefore a more complex approach to encoding is required." +#: ../../docs/tutorials/3d/high_dynamic_range.rst:59 +msgid "The mathematics of a scene-referred model require that we multiply the scene by different values to adjust the intensities and exposure to different light ranges. The transfer function of the display can't appropriately render the wider dynamic range of the game engine's scene output using the simple transfer function of the display. A more complex approach to encoding is required." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:68 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:67 msgid "Scene linear & asset pipelines" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:70 -msgid "Working in scene linear sRGB is not as simple as just pressing a switch. First, imported image assets must be converted to linear light ratios on import. Even when linearized, those assets may not be perfectly well suited for use as textures, depending on how they were generated." +#: ../../docs/tutorials/3d/high_dynamic_range.rst:69 +msgid "Working in scene-linear sRGB is not as simple as just pressing a switch. First, imported image assets must be converted to linear light ratios on import. Even when linearized, those assets may not be perfectly well suited for use as textures, depending on how they were generated." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:75 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:74 msgid "There are two ways to do this:" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:78 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:77 msgid "sRGB transfer function to display linear ratios on image import" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:80 -msgid "This is the easiest, but not the most ideal, method of using sRGB assets. One issue with this is loss of quality. Using 8 bit per channel to represent linear light ratios is not a sufficient but depth to quantise the values correctly. These textures might later be compressed too, which can exacerbate the problem." +#: ../../docs/tutorials/3d/high_dynamic_range.rst:79 +msgid "This is the easiest method of using sRGB assets, but it's not the most ideal. One issue with this is loss of quality. Using 8 bits per channel to represent linear light ratios is not sufficient to quantize the values correctly. These textures may also be compressed later, which can exacerbate the problem." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:86 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:85 msgid "Hardware sRGB transfer function to display linear conversion" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:88 -msgid "The GPU will do the conversion after reading the texel using floating point. This works fine on PC and consoles, but most mobile devices do no support it, or do not support it on compressed texture format (iOS for example)." +#: ../../docs/tutorials/3d/high_dynamic_range.rst:87 +msgid "The GPU will do the conversion after reading the texel using floating point. This works fine on PC and consoles, but most mobile devices don't support it, or they don't support it on compressed texture formats (iOS for example)." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:94 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:92 msgid "Scene linear to display referred nonlinear" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:96 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:94 msgid "After all the rendering is done, the scene linear render requires transforming to a suitable output such as an sRGB display. To do this, enable sRGB conversion in the current :ref:`Environment ` (more on that below)." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:100 -msgid "Keep in mind that sRGB -> Display Linear and Display Linear -> sRGB conversions must always be **both** enabled. Failing to enable one of them will result in horrible visuals suitable only for avant-garde experimental indie games." +#: ../../docs/tutorials/3d/high_dynamic_range.rst:98 +msgid "Keep in mind that the **sRGB -> Display Linear** and **Display Linear -> sRGB** conversions must always be **both** enabled. Failing to enable one of them will result in horrible visuals suitable only for avant-garde experimental indie games." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:106 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:104 msgid "Parameters of HDR" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:108 -msgid "HDR setting can be found in the :ref:`Environment ` resource. These are found most of the time inside a :ref:`WorldEnvironment ` node or set in a camera. For more information see :ref:`doc_environment_and_post_processing`." +#: ../../docs/tutorials/3d/high_dynamic_range.rst:106 +msgid "HDR settings can be found in the :ref:`Environment ` resource. Most of the time, these are found inside a :ref:`WorldEnvironment ` node or set in a Camera node. For more information, see :ref:`doc_environment_and_post_processing`." msgstr "" diff --git a/sphinx/templates/tutorials/3d/index.pot b/sphinx/templates/tutorials/3d/index.pot index 05474332d4..ee44d57a4a 100644 --- a/sphinx/templates/tutorials/3d/index.pot +++ b/sphinx/templates/tutorials/3d/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/introduction_to_3d.pot b/sphinx/templates/tutorials/3d/introduction_to_3d.pot index 75daa98ccf..98056c1425 100644 --- a/sphinx/templates/tutorials/3d/introduction_to_3d.pot +++ b/sphinx/templates/tutorials/3d/introduction_to_3d.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -153,11 +153,11 @@ msgid "Some useful keybindings:" msgstr "" #: ../../docs/tutorials/3d/introduction_to_3d.rst:162 -msgid "To snap placement or rotation, press the \"Ctrl\" key while moving, scaling or rotating." +msgid "To snap placement or rotation, press :kbd:`Ctrl` while moving, scaling or rotating." msgstr "" #: ../../docs/tutorials/3d/introduction_to_3d.rst:164 -msgid "To center the view on the selected object, press the \"f\" key." +msgid "To center the view on the selected object, press :kbd:`F`." msgstr "" #: ../../docs/tutorials/3d/introduction_to_3d.rst:167 diff --git a/sphinx/templates/tutorials/3d/lights_and_shadows.pot b/sphinx/templates/tutorials/3d/lights_and_shadows.pot index c425c78200..a5b348f01c 100644 --- a/sphinx/templates/tutorials/3d/lights_and_shadows.pot +++ b/sphinx/templates/tutorials/3d/lights_and_shadows.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/reflection_probes.pot b/sphinx/templates/tutorials/3d/reflection_probes.pot index 62dd3dc3c8..def9765ad6 100644 --- a/sphinx/templates/tutorials/3d/reflection_probes.pot +++ b/sphinx/templates/tutorials/3d/reflection_probes.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/spatial_material.pot b/sphinx/templates/tutorials/3d/spatial_material.pot index 2a6ef974a2..61a4cd77dc 100644 --- a/sphinx/templates/tutorials/3d/spatial_material.pot +++ b/sphinx/templates/tutorials/3d/spatial_material.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/using_gridmaps.pot b/sphinx/templates/tutorials/3d/using_gridmaps.pot index 84a94afe42..c6a509c3d8 100644 --- a/sphinx/templates/tutorials/3d/using_gridmaps.pot +++ b/sphinx/templates/tutorials/3d/using_gridmaps.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -105,15 +105,15 @@ msgid "The \"Cell/Size\" property should be set to the size of your meshes. You msgstr "" #: ../../docs/tutorials/3d/using_gridmaps.rst:87 -msgid "Now you can start designing the level by choosing a tile from the palette and placing it with Left-Click in the editor window. To remove a tile, use Shift+Right-click." +msgid "Now you can start designing the level by choosing a tile from the palette and placing it with Left-Click in the editor window. To remove a tile, hold :kbd:`Shift` and use Right-click." msgstr "" #: ../../docs/tutorials/3d/using_gridmaps.rst:91 -msgid "Click on the \"GridMap\" menu to see options and shortcuts. For example, pressing \"S\" rotates a tile around the y-axis." +msgid "Click on the \"GridMap\" menu to see options and shortcuts. For example, pressing :kbd:`S` rotates a tile around the y-axis." msgstr "" #: ../../docs/tutorials/3d/using_gridmaps.rst:96 -msgid "Holding and dragging with the left mouse button will draw a selection box. You can duplicate or clear the selected area using the respective menu options." +msgid "Holding :kbd:`Shift` and dragging with the left mouse button will draw a selection box. You can duplicate or clear the selected area using the respective menu options." msgstr "" #: ../../docs/tutorials/3d/using_gridmaps.rst:102 diff --git a/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot b/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot index 2a3b28b0d4..2ecd4f5203 100644 --- a/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot +++ b/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/using_transforms.pot b/sphinx/templates/tutorials/3d/using_transforms.pot index 30934172f8..e2f15e868a 100644 --- a/sphinx/templates/tutorials/3d/using_transforms.pot +++ b/sphinx/templates/tutorials/3d/using_transforms.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/vertex_animation/animating_thousands_of_fish.pot b/sphinx/templates/tutorials/3d/vertex_animation/animating_thousands_of_fish.pot index ad4c15da50..89a117040e 100644 --- a/sphinx/templates/tutorials/3d/vertex_animation/animating_thousands_of_fish.pot +++ b/sphinx/templates/tutorials/3d/vertex_animation/animating_thousands_of_fish.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/vertex_animation/controlling_thousands_of_fish.pot b/sphinx/templates/tutorials/3d/vertex_animation/controlling_thousands_of_fish.pot index f3ab1a9a6f..d59fcb9e33 100644 --- a/sphinx/templates/tutorials/3d/vertex_animation/controlling_thousands_of_fish.pot +++ b/sphinx/templates/tutorials/3d/vertex_animation/controlling_thousands_of_fish.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/vertex_animation/index.pot b/sphinx/templates/tutorials/3d/vertex_animation/index.pot index 502cb5e2f5..c22e02f69f 100644 --- a/sphinx/templates/tutorials/3d/vertex_animation/index.pot +++ b/sphinx/templates/tutorials/3d/vertex_animation/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/animation/2d_skeletons.pot b/sphinx/templates/tutorials/animation/2d_skeletons.pot index a338dc6e26..c51e3edb35 100644 --- a/sphinx/templates/tutorials/animation/2d_skeletons.pot +++ b/sphinx/templates/tutorials/animation/2d_skeletons.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/animation/animation_tree.pot b/sphinx/templates/tutorials/animation/animation_tree.pot index d14f2c4dfb..cad5a79675 100644 --- a/sphinx/templates/tutorials/animation/animation_tree.pot +++ b/sphinx/templates/tutorials/animation/animation_tree.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/animation/cutout_animation.pot b/sphinx/templates/tutorials/animation/cutout_animation.pot index 92a2d11b8b..0828b63a31 100644 --- a/sphinx/templates/tutorials/animation/cutout_animation.pot +++ b/sphinx/templates/tutorials/animation/cutout_animation.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -101,7 +101,7 @@ msgid "Next will be the torso. The torso needs to be a child of the hip, so crea msgstr "" #: ../../docs/tutorials/animation/cutout_animation.rst:82 -msgid "This looks good. Let's see if our hierarchy works as a skeleton by rotating the torso. We can do this be pressing ``E`` to enter rotate mode, and dragging with the left mouse button. To exit rotate mode hit ``ESC``." +msgid "This looks good. Let's see if our hierarchy works as a skeleton by rotating the torso. We can do this be pressing :kbd:`E` to enter rotate mode, and dragging with the left mouse button. To exit rotate mode hit :kbd:`ESC`." msgstr "" #: ../../docs/tutorials/animation/cutout_animation.rst:88 @@ -121,7 +121,7 @@ msgid "The pivot can be adjusted by changing the *offset* property in the Sprite msgstr "" #: ../../docs/tutorials/animation/cutout_animation.rst:103 -msgid "The pivot can also be adjusted *visually*. While hovering over the desired pivot point, press the \"v\" key to move the pivot there for the selected Sprite. There is also a tool in the tool bar that has a similar function." +msgid "The pivot can also be adjusted *visually*. While hovering over the desired pivot point, press :kbd:`V` to move the pivot there for the selected Sprite. There is also a tool in the tool bar that has a similar function." msgstr "" #: ../../docs/tutorials/animation/cutout_animation.rst:110 diff --git a/sphinx/templates/tutorials/animation/index.pot b/sphinx/templates/tutorials/animation/index.pot index c6721a61e9..4787e7f95c 100644 --- a/sphinx/templates/tutorials/animation/index.pot +++ b/sphinx/templates/tutorials/animation/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/animation/introduction_2d.pot b/sphinx/templates/tutorials/animation/introduction_2d.pot index cc64852445..ef887a98e0 100644 --- a/sphinx/templates/tutorials/animation/introduction_2d.pot +++ b/sphinx/templates/tutorials/animation/introduction_2d.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -141,7 +141,7 @@ msgid "Example of Normal animation tracks" msgstr "" #: ../../docs/tutorials/animation/introduction_2d.rst:100 -msgid "If you animate the wrong property, you can edit a track's path anytime. Double click on it and type the new path. Play the animation using the \"Play from beginning\" button |Play from beginning| (Default shortcut: Shift+D) to see the changes instantly." +msgid "If you animate the wrong property, you can edit a track's path anytime. Double click on it and type the new path. Play the animation using the \"Play from beginning\" button |Play from beginning| (or pressing :kbd:`Shift + D` on keyboard) to see the changes instantly." msgstr "" #: ../../docs/tutorials/animation/introduction_2d.rst:106 diff --git a/sphinx/templates/tutorials/assetlib/index.pot b/sphinx/templates/tutorials/assetlib/index.pot index 43a91b4b37..8d2cdcb998 100644 --- a/sphinx/templates/tutorials/assetlib/index.pot +++ b/sphinx/templates/tutorials/assetlib/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/assetlib/uploading_to_assetlib.pot b/sphinx/templates/tutorials/assetlib/uploading_to_assetlib.pot index 26dfc0c7bb..d29c48ceac 100644 --- a/sphinx/templates/tutorials/assetlib/uploading_to_assetlib.pot +++ b/sphinx/templates/tutorials/assetlib/uploading_to_assetlib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,146 +33,206 @@ msgid "As mentioned in the :ref:`doc_using_assetlib` document, in order to be ab msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:17 -msgid "Submitting" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:19 -msgid "Once you are logged in, you will be able to head over to the \"Submit Assets\" page of the AssetLib, which will look like this:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:22 -msgid "|image0|" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:24 -msgid "While it may look like a lot (and there is more as you scroll down), each field is described in terms of what you should put in. We will nonetheless go over what is required in the submission form here as well." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:29 -msgid "**Asset Name**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:29 -msgid "The name of your asset. Should be a unique, descriptive title of what your asset is." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:35 -msgid "**Category**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:32 -msgid "The category that your asset belongs to, and will be shown in search results. The category is split into **Addons** and **Projects**. In-editor, assets of the Project type (Templates, Demos, Projects) only show up when viewing the AssetLib from the Project Manager, while assets of the Addon type will only be visible from inside a project." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:41 -msgid "**Godot version**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:38 -msgid "The version of the engine that the asset works with. Currently, it's not possible to have a single asset entry contain downloads for multiple engine versions, so you may need to re-submit the asset multiple times, with an entry for each Godot version it supports. This is particularly important when dealing with major versions of the engine, such as Godot 2.x and Godot 3.x." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:48 -msgid "**Version**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:44 -msgid "The version number of the asset. While you are free to choose and use any versioning scheme that you like, you may want to look into something such as `SemVer `_ if you want your asset's versioning scheme to be clear and consistent. Note that there is also an internal version number, incremented every time the asset download URL is changed or updated." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:53 -msgid "**Repository host**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:51 -msgid "Assets uploaded to the AssetLib are not hosted on it directly. Instead, they point to repositories hosted on third-party Git providers, such as GitHub, GitLab or Bitbucket. This is where you choose which provider your asset uses, so the site can compute the final download link." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:56 -msgid "**Repository URL**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:56 -msgid "The URL to your asset's files/webpage. This will vary based on your choice of provider, but it should look similar to `https://github.com//`." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:61 -msgid "**Issues URL**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:59 -msgid "The URL to your asset's issue tracker. Again, this will differ from repository host to repository host, but will likely look similar to `https://github.com///issues`. You may leave this field empty if you use your provider's issue tracker, and it's part of the same repository." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:65 -msgid "**Download Commit/Tag**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:64 -msgid "The commit or tag of the asset. For example, `b1d3172f89b86e52465a74f63a74ac84c491d3e1` or `v1.0`. The site computes the actual download URL from this." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:69 -msgid "**Icon URL**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:68 -msgid "The URL to your asset's icon (which will be used as a thumbnail in the AssetLib search results and on the asset's page). Should be an image in either the PNG or JPG format." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:74 -msgid "**License**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:72 -msgid "The license under which you are distributing the asset. The list includes a variety of free and open-source software licenses, such as GPL (v2 and v3), MIT, BSD and Boost Software License. You can visit `OpenSource.org `_ for a detailed description of each of the listed licenses." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:80 -msgid "**Description**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:77 -msgid "Finally, you can use the Description field for a textual overview of your asset, its features and behavior, a changelog, et cetera. In the future, formatting with Markdown will be supported, but currently, your only option is plain text." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:82 -msgid "You may also include up to three video and/or image previews, which will be shown at the bottom of the asset page. Use the \"Enable\" checkbox on each of the preview submission boxes to enable them." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:86 -msgid "**Type**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:87 -msgid "Either an image, or a video." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:88 -msgid "**Image/YouTube URL**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:89 -msgid "Either a link to the image, or to a video, hosted on YouTube." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:93 -msgid "**Thumbnail URL**:" -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:91 -msgid "A URL to an image that will be used as a thumbnail for the preview. This option will be removed eventually, and thumbnails will be automatically computed instead." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:95 -msgid "Once you are done, hit Submit. Your asset will be entered into the pending queue, which you can visit on the AssetLib `here `_ . The approval process is manual and may take up to a few days for your addon to be accepted (or rejected), so please be patient! You will be informed when your asset is reviewed. If it was rejected, you will be told why that may have been, and you will be able to submit it again with the appropriate changes. You may have some luck accelerating the approval process by messaging the moderators/assetlib reviewers on IRC (the #godotengine-atelier channel on Freenode), or the official Discord server." -msgstr "" - -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:106 msgid "Submission guidelines" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:108 -msgid "[TODO]" +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:19 +msgid "Before submitting your asset, please ensure it follows all of the requirements, and also consider following the recommendations." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:23 +msgid "Requirements" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:25 +msgid "Generally speaking, most assets people submit to the asset library are accepted. However, in order for your asset to be accepted, there are a few requirements your asset needs to meet to be approved." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:29 +msgid "The asset must work. If the asset doesn't run or otherwise doesn't work in the specified Godot version, then it will be rejected." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:32 +msgid "No submodules, or any submodules must be non-essential. GitHub does not include submodules in the downloaded ZIP file, so if the asset needs the contents of the submodule, your asset won't work." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:36 +msgid "The license needs to be correct. The license listed on the asset library must match the license in the repository." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:39 +msgid "Do not set the download commit to \"master\". The asset library validates all assets with a SHA256 hash, so the version hosted on GitHub needs to be *exactly* the same. Instead of \"master\", either specify a commit hash, or tag versions and specify a version number." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:44 +msgid "Use proper English for the name and description of your asset. This includes using correct capitalization, and using full sentences in the description." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:48 +msgid "The icon link must be a direct link. For icons hosted on GitHub, the link must start with \"raw.githubusercontent.com\", not \"github.com\"." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:52 +msgid "Recommendations" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:54 +msgid "These things are not required for your asset to be approved, but if you follow these recommendations, you can help make the asset library a better place for all users." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:58 +msgid "Fix or suppress all script warnings. The warning system is there to help identify issues with your code, but people using your asset don't need to see them." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:62 +msgid "Make your code conform to the official style guides. Having a consistent style helps other people read your code, and it also helps if other people wish to contribute to your asset. See: the :ref:`doc_gdscript_styleguide` or the :ref:`doc_c_sharp_styleguide`." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:67 +msgid "If your asset is a library for working with other files, consider including example files in the asset." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:70 +msgid "The icon should be a square, its aspect ratio should be 1:1. It should also ideally have a minimum resolution of 64x64 pixels." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:73 +msgid "While the asset library allows more than just GitHub, consider hosting your asset's source code on GitHub. Other services may not work reliably, and a lack of familiarity can be a barrier to contributors." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:78 +msgid "Submitting" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:80 +msgid "Once you are logged in, you will be able to head over to the \"Submit Assets\" page of the AssetLib, which will look like this:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:83 +msgid "|image0|" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:85 +msgid "While it may look like a lot (and there is more as you scroll down), each field is described in terms of what you should put in. We will nonetheless go over what is required in the submission form here as well." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:90 +msgid "**Asset Name**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:90 +msgid "The name of your asset. Should be a unique, descriptive title of what your asset is." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:96 +msgid "**Category**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:93 +msgid "The category that your asset belongs to, and will be shown in search results. The category is split into **Addons** and **Projects**. In-editor, assets of the Project type (Templates, Demos, Projects) only show up when viewing the AssetLib from the Project Manager, while assets of the Addon type will only be visible from inside a project." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:102 +msgid "**Godot version**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:99 +msgid "The version of the engine that the asset works with. Currently, it's not possible to have a single asset entry contain downloads for multiple engine versions, so you may need to re-submit the asset multiple times, with an entry for each Godot version it supports. This is particularly important when dealing with major versions of the engine, such as Godot 2.x and Godot 3.x." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:109 +msgid "**Version**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:105 +msgid "The version number of the asset. While you are free to choose and use any versioning scheme that you like, you may want to look into something such as `SemVer `_ if you want your asset's versioning scheme to be clear and consistent. Note that there is also an internal version number, incremented every time the asset download URL is changed or updated." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:114 +msgid "**Repository host**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:112 +msgid "Assets uploaded to the AssetLib are not hosted on it directly. Instead, they point to repositories hosted on third-party Git providers, such as GitHub, GitLab or Bitbucket. This is where you choose which provider your asset uses, so the site can compute the final download link." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:117 +msgid "**Repository URL**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:117 +msgid "The URL to your asset's files/webpage. This will vary based on your choice of provider, but it should look similar to `https://github.com//`." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:122 +msgid "**Issues URL**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:120 +msgid "The URL to your asset's issue tracker. Again, this will differ from repository host to repository host, but will likely look similar to `https://github.com///issues`. You may leave this field empty if you use your provider's issue tracker, and it's part of the same repository." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:126 +msgid "**Download Commit/Tag**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:125 +msgid "The commit or tag of the asset. For example, `b1d3172f89b86e52465a74f63a74ac84c491d3e1` or `v1.0`. The site computes the actual download URL from this." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:130 +msgid "**Icon URL**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:129 +msgid "The URL to your asset's icon (which will be used as a thumbnail in the AssetLib search results and on the asset's page). Should be an image in either the PNG or JPG format." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:135 +msgid "**License**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:133 +msgid "The license under which you are distributing the asset. The list includes a variety of free and open-source software licenses, such as GPL (v2 and v3), MIT, BSD and Boost Software License. You can visit `OpenSource.org `_ for a detailed description of each of the listed licenses." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:141 +msgid "**Description**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:138 +msgid "Finally, you can use the Description field for a textual overview of your asset, its features and behavior, a changelog, et cetera. In the future, formatting with Markdown will be supported, but currently, your only option is plain text." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:143 +msgid "You may also include up to three video and/or image previews, which will be shown at the bottom of the asset page. Use the \"Enable\" checkbox on each of the preview submission boxes to enable them." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:147 +msgid "**Type**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:148 +msgid "Either an image, or a video." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:149 +msgid "**Image/YouTube URL**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:150 +msgid "Either a link to the image, or to a video, hosted on YouTube." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:154 +msgid "**Thumbnail URL**:" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:152 +msgid "A URL to an image that will be used as a thumbnail for the preview. This option will be removed eventually, and thumbnails will be automatically computed instead." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:156 +msgid "Once you are done, hit Submit. Your asset will be entered into the pending queue, which you can visit on the AssetLib `here `_ . The approval process is manual and may take up to a few days for your addon to be accepted (or rejected), so please be patient! You will be informed when your asset is reviewed. If it was rejected, you will be told why that may have been, and you will be able to submit it again with the appropriate changes. You may have some luck accelerating the approval process by messaging the moderators/assetlib reviewers on IRC (the #godotengine-atelier channel on Freenode), or the official Discord server." msgstr "" diff --git a/sphinx/templates/tutorials/assetlib/using_assetlib.pot b/sphinx/templates/tutorials/assetlib/using_assetlib.pot index c8a1262a9d..be5894e0b2 100644 --- a/sphinx/templates/tutorials/assetlib/using_assetlib.pot +++ b/sphinx/templates/tutorials/assetlib/using_assetlib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/assetlib/what_is_assetlib.pot b/sphinx/templates/tutorials/assetlib/what_is_assetlib.pot index 9b4cec3d1c..3234ff49aa 100644 --- a/sphinx/templates/tutorials/assetlib/what_is_assetlib.pot +++ b/sphinx/templates/tutorials/assetlib/what_is_assetlib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,14 +41,30 @@ msgid "Please note that the AssetLib is relatively young - it may have various p msgstr "" #: ../../docs/tutorials/assetlib/what_is_assetlib.rst:29 +msgid "Types of assets" +msgstr "" + +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:31 +msgid "Be aware that there are, broadly, two different types of assets you can post." +msgstr "" + +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:33 +msgid "Assets labeled as \"Templates\", \"Projects\", or \"Demos\" appear under the \"Templates\" tab in the Godot project manager. These assets are standalone Godot projects that can run by themselves." +msgstr "" + +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:37 +msgid "Other assets show up inside of the Godot editor under the \"AssetLib\" main screen tab, next to \"2D\", \"3D\", and \"Script\". These assets are meant to be downloaded and placed into an existing Godot project." +msgstr "" + +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:42 msgid "Frequently asked questions" msgstr "" -#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:32 +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:45 msgid "Can paid assets be uploaded to the asset library?" msgstr "" -#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:34 +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:47 msgid "Not to the official one, though in the future, there might be other asset libraries which allow it. That said, you are allowed to monetize and sell Godot assets outside the Asset Library." msgstr "" diff --git a/sphinx/templates/tutorials/audio/audio_buses.pot b/sphinx/templates/tutorials/audio/audio_buses.pot index 5d4a12b397..35aa3b0cb2 100644 --- a/sphinx/templates/tutorials/audio/audio_buses.pot +++ b/sphinx/templates/tutorials/audio/audio_buses.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/audio/audio_streams.pot b/sphinx/templates/tutorials/audio/audio_streams.pot index ace42a3dd0..3bfce29334 100644 --- a/sphinx/templates/tutorials/audio/audio_streams.pot +++ b/sphinx/templates/tutorials/audio/audio_streams.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/audio/index.pot b/sphinx/templates/tutorials/audio/index.pot index ed81ac67fa..c0ab4d8b49 100644 --- a/sphinx/templates/tutorials/audio/index.pot +++ b/sphinx/templates/tutorials/audio/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/audio/recording_with_microphone.pot b/sphinx/templates/tutorials/audio/recording_with_microphone.pot index 18b6afcbc4..a2ada14b02 100644 --- a/sphinx/templates/tutorials/audio/recording_with_microphone.pot +++ b/sphinx/templates/tutorials/audio/recording_with_microphone.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/audio/sync_with_audio.pot b/sphinx/templates/tutorials/audio/sync_with_audio.pot index 9818139704..ca8a357373 100644 --- a/sphinx/templates/tutorials/audio/sync_with_audio.pot +++ b/sphinx/templates/tutorials/audio/sync_with_audio.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -81,46 +81,42 @@ msgid "The output latency (what happens after the mix) can also be estimated by msgstr "" #: ../../docs/tutorials/audio/sync_with_audio.rst:35 -msgid "Add these two and it's possible to guess almost exactly when sound or music will begin playing in the speakers:" +msgid "Add these two and it's possible to guess almost exactly when sound or music will begin playing in the speakers during *_process()*:" msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:43 -msgid "This way, obtaining the actual playback position during *_process()* is possible:" -msgstr "" - -#: ../../docs/tutorials/audio/sync_with_audio.rst:66 +#: ../../docs/tutorials/audio/sync_with_audio.rst:58 msgid "In the long run, though, as the sound hardware clock is never exactly in sync with the system clock, the timing information will slowly drift away." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:68 +#: ../../docs/tutorials/audio/sync_with_audio.rst:60 msgid "For a rhythm game where a song begins and ends after a few minutes, this approach is fine (and it's the recommended approach). For a game where playback can last a much longer time, the game will eventually go out of sync and a different approach is needed." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:71 +#: ../../docs/tutorials/audio/sync_with_audio.rst:63 msgid "Using the sound hardware clock to sync" msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:73 +#: ../../docs/tutorials/audio/sync_with_audio.rst:65 msgid "Using :ref:`AudioStreamPlayer.get_playback_position()` to obtain the current position for the song sounds ideal, but it's not that useful as-is. This value will increment in chunks (every time the audio callback mixed a block of sound), so many calls can return the same value. Added to this, the value will be out of sync with the speakers too because of the previously mentioned reasons." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:75 +#: ../../docs/tutorials/audio/sync_with_audio.rst:67 msgid "To compensate for the \"chunked\" output, there is a function that can help: :ref:`AudioServer.get_time_since_last_mix()`." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:78 +#: ../../docs/tutorials/audio/sync_with_audio.rst:70 msgid "Adding the return value from this function to *get_playback_position()* increases precision:" msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:85 +#: ../../docs/tutorials/audio/sync_with_audio.rst:77 msgid "To increase precision, subtract the latency information (how much it takes for the audio to be heard after it was mixed):" msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:92 +#: ../../docs/tutorials/audio/sync_with_audio.rst:84 msgid "The result may be a bit jittery due how multiple threads work. Just check that the value is not less than in the previous frame (discard it if so). This is also a less precise approach than the one before, but it will work for songs of any length, or synchronizing anything (sound effects, as an example) to music." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:94 +#: ../../docs/tutorials/audio/sync_with_audio.rst:86 msgid "Here is the same code as before using this approach:" msgstr "" diff --git a/sphinx/templates/tutorials/content/index.pot b/sphinx/templates/tutorials/content/index.pot index b3f6a632b5..6c0f0e70e0 100644 --- a/sphinx/templates/tutorials/content/index.pot +++ b/sphinx/templates/tutorials/content/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/making_trees.pot b/sphinx/templates/tutorials/content/making_trees.pot index c7aa94b3ab..142409ec3e 100644 --- a/sphinx/templates/tutorials/content/making_trees.pot +++ b/sphinx/templates/tutorials/content/making_trees.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/procedural_geometry/arraymesh.pot b/sphinx/templates/tutorials/content/procedural_geometry/arraymesh.pot index ca19ad890d..84d9953feb 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/arraymesh.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/arraymesh.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/procedural_geometry/immediategeometry.pot b/sphinx/templates/tutorials/content/procedural_geometry/immediategeometry.pot index 7d684bc2bf..f9704d868b 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/immediategeometry.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/immediategeometry.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,7 +29,7 @@ msgid "Generating complex geometry (several thousand vertices) with this node is msgstr "" #: ../../docs/tutorials/content/procedural_geometry/immediategeometry.rst:13 -msgid "Before starting, you should clear the clear the geometry by calling ``clear()``. This ensures that you are not building upon the geometry from the previous frame. If you want to keep geometry between frames, do not call ``clear()``." +msgid "Before starting, you should clear the geometry by calling ``clear()``. This ensures that you are not building upon the geometry from the previous frame. If you want to keep geometry between frames, do not call ``clear()``." msgstr "" #: ../../docs/tutorials/content/procedural_geometry/immediategeometry.rst:17 diff --git a/sphinx/templates/tutorials/content/procedural_geometry/index.pot b/sphinx/templates/tutorials/content/procedural_geometry/index.pot index 6eb7536182..a30a1d22bc 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/index.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/procedural_geometry/meshdatatool.pot b/sphinx/templates/tutorials/content/procedural_geometry/meshdatatool.pot index 132cc5e5df..46684482e9 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/meshdatatool.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/meshdatatool.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/procedural_geometry/surfacetool.pot b/sphinx/templates/tutorials/content/procedural_geometry/surfacetool.pot index 3461c70db8..1bd6ca12df 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/surfacetool.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/surfacetool.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/debug/index.pot b/sphinx/templates/tutorials/debug/index.pot index 0ac540ccbd..12a948f4e5 100644 --- a/sphinx/templates/tutorials/debug/index.pot +++ b/sphinx/templates/tutorials/debug/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/debug/overview_of_debugging_tools.pot b/sphinx/templates/tutorials/debug/overview_of_debugging_tools.pot index 3c32d059f5..b3788c4690 100644 --- a/sphinx/templates/tutorials/debug/overview_of_debugging_tools.pot +++ b/sphinx/templates/tutorials/debug/overview_of_debugging_tools.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/bbcode_in_richtextlabel.pot b/sphinx/templates/tutorials/gui/bbcode_in_richtextlabel.pot index 5a603f4a57..13d51c6f02 100644 --- a/sphinx/templates/tutorials/gui/bbcode_in_richtextlabel.pot +++ b/sphinx/templates/tutorials/gui/bbcode_in_richtextlabel.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/custom_gui_controls.pot b/sphinx/templates/tutorials/gui/custom_gui_controls.pot index c85ffa42e3..142d43ab00 100644 --- a/sphinx/templates/tutorials/gui/custom_gui_controls.pot +++ b/sphinx/templates/tutorials/gui/custom_gui_controls.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/gui_containers.pot b/sphinx/templates/tutorials/gui/gui_containers.pot index ecea0650e6..2d114468df 100644 --- a/sphinx/templates/tutorials/gui/gui_containers.pot +++ b/sphinx/templates/tutorials/gui/gui_containers.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/gui_skinning.pot b/sphinx/templates/tutorials/gui/gui_skinning.pot index 5106799ce2..9ce6207bd2 100644 --- a/sphinx/templates/tutorials/gui/gui_skinning.pot +++ b/sphinx/templates/tutorials/gui/gui_skinning.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/index.pot b/sphinx/templates/tutorials/gui/index.pot index 84961811ae..965d7a47c1 100644 --- a/sphinx/templates/tutorials/gui/index.pot +++ b/sphinx/templates/tutorials/gui/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/size_and_anchors.pot b/sphinx/templates/tutorials/gui/size_and_anchors.pot index b5502a8c36..a4b3c136e3 100644 --- a/sphinx/templates/tutorials/gui/size_and_anchors.pot +++ b/sphinx/templates/tutorials/gui/size_and_anchors.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/i18n/index.pot b/sphinx/templates/tutorials/i18n/index.pot index 140a20dfcf..dd9010a870 100644 --- a/sphinx/templates/tutorials/i18n/index.pot +++ b/sphinx/templates/tutorials/i18n/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/i18n/internationalizing_games.pot b/sphinx/templates/tutorials/i18n/internationalizing_games.pot index b12b1fa415..24f33ea4ba 100644 --- a/sphinx/templates/tutorials/i18n/internationalizing_games.pot +++ b/sphinx/templates/tutorials/i18n/internationalizing_games.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/i18n/locales.pot b/sphinx/templates/tutorials/i18n/locales.pot index 824e971230..2fc7f9f0e7 100644 --- a/sphinx/templates/tutorials/i18n/locales.pot +++ b/sphinx/templates/tutorials/i18n/locales.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/i18n/localization_using_gettext.pot b/sphinx/templates/tutorials/i18n/localization_using_gettext.pot index e15b3c3f46..e009b3d61b 100644 --- a/sphinx/templates/tutorials/i18n/localization_using_gettext.pot +++ b/sphinx/templates/tutorials/i18n/localization_using_gettext.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot b/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot index 7fe6d12dc6..b446aa3d94 100644 --- a/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot +++ b/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/inputs/index.pot b/sphinx/templates/tutorials/inputs/index.pot index ad3a4aa912..ae0d8009fe 100644 --- a/sphinx/templates/tutorials/inputs/index.pot +++ b/sphinx/templates/tutorials/inputs/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/inputs/input_examples.pot b/sphinx/templates/tutorials/inputs/input_examples.pot index dbaf6a0d35..8771f46cbe 100644 --- a/sphinx/templates/tutorials/inputs/input_examples.pot +++ b/sphinx/templates/tutorials/inputs/input_examples.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -44,128 +44,128 @@ msgstr "" msgid "Examples:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:45 +#: ../../docs/tutorials/inputs/input_examples.rst:62 msgid "This gives you the flexibility to mix-and-match the type of input processing you do." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:48 +#: ../../docs/tutorials/inputs/input_examples.rst:65 msgid "For the remainder of this tutorial, we'll focus on capturing individual events in ``_input()``." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:52 +#: ../../docs/tutorials/inputs/input_examples.rst:69 msgid "Input events" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:54 +#: ../../docs/tutorials/inputs/input_examples.rst:71 msgid "Input events are objects that inherit from :ref:`InputEvent `. Depending on the event type, the object will contain specific properties related to that event. To see what events actually look like, add a Node and attach the following script:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:67 +#: ../../docs/tutorials/inputs/input_examples.rst:91 msgid "As you press keys, move the mouse, and perform other inputs, you'll see each event scroll by in the output window. Here's an example of the output:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:81 +#: ../../docs/tutorials/inputs/input_examples.rst:105 msgid "As you can see, the results are very different for the different types of input. Key events are even printed as their key symbols. For example, let's consider :ref:`InputEventMouseButton `. It inherits from the following classes:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:85 +#: ../../docs/tutorials/inputs/input_examples.rst:109 msgid ":ref:`InputEvent ` - the base class for all input events" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:86 -msgid ":ref:`InputEventWithModifiers ` - adds the ability to check if modifiers are pressed, such as ``Shift`` or ``Alt``." +#: ../../docs/tutorials/inputs/input_examples.rst:110 +msgid ":ref:`InputEventWithModifiers ` - adds the ability to check if modifiers are pressed, such as :kbd:`Shift` or :kbd:`Alt`." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:87 +#: ../../docs/tutorials/inputs/input_examples.rst:111 msgid ":ref:`InputEventMouse ` - adds mouse event properties, such as ``position``" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:88 +#: ../../docs/tutorials/inputs/input_examples.rst:112 msgid ":ref:`InputEventMouseButton ` - contains the index of the button that was pressed, whether it was a double-click, etc." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:90 +#: ../../docs/tutorials/inputs/input_examples.rst:114 msgid "It's a good idea to keep the class reference open while you're working with events so you can check the event type's available properties and methods." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:94 +#: ../../docs/tutorials/inputs/input_examples.rst:118 msgid "You can encounter errors if you try to access a property on an input type that doesn't contain it - calling ``position`` on ``InputEventKey`` for example. To avoid this, make sure to test the event type first:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:107 +#: ../../docs/tutorials/inputs/input_examples.rst:140 msgid "InputMap" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:109 +#: ../../docs/tutorials/inputs/input_examples.rst:142 msgid "The :ref:`InputMap ` is the most flexible way to handle a variety of inputs. You use this by creating named input *actions*, to which you can assign any number of input events, such as keypresses or mouse clicks. A new Godot project includes a number of default actions already defined. To see them, and to add your own, open Project -> Project Settings and select the InputMap tab:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:119 +#: ../../docs/tutorials/inputs/input_examples.rst:152 msgid "Capturing actions" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:121 +#: ../../docs/tutorials/inputs/input_examples.rst:154 msgid "Once you've defined your actions, you can process them in your scripts using ``is_action_pressed()`` and ``is_action_released()`` by passing the name of the action you're looking for:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:133 +#: ../../docs/tutorials/inputs/input_examples.rst:176 msgid "Keyboard events" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:135 -msgid "Keyboard events are captured in :ref:`InputEventKey `. While it's recommended to use input actions instead, there may be cases where you want to specifically look at key events. For this example, let's check for the \"T\" key:" -msgstr "" - -#: ../../docs/tutorials/inputs/input_examples.rst:148 -#: ../../docs/tutorials/inputs/input_examples.rst:171 -msgid "See :ref:`@GlobalScope_KeyList ` for a list of scancode constants." -msgstr "" - -#: ../../docs/tutorials/inputs/input_examples.rst:152 -msgid "Keyboard modifiers" -msgstr "" - -#: ../../docs/tutorials/inputs/input_examples.rst:154 -msgid "Modifier properties are inherited from :ref:`InputEventWithModifiers `. This allows you to check for modifier combinations using boolean properties. Let's imagine you want one thing to happen when the \"T\" key is pressed, but something different when it's \"Shift+T\":" -msgstr "" - -#: ../../docs/tutorials/inputs/input_examples.rst:175 -msgid "Mouse events" -msgstr "" - -#: ../../docs/tutorials/inputs/input_examples.rst:177 -msgid "Mouse events stem from the :ref:`InputEventMouse ` class, and are separated into two types: :ref:`InputEventMouseButton ` and :ref:`InputEventMouseMotion `. Note that this means that all mouse events will contain a ``position`` property." -msgstr "" - -#: ../../docs/tutorials/inputs/input_examples.rst:183 -msgid "Mouse buttons" -msgstr "" - -#: ../../docs/tutorials/inputs/input_examples.rst:185 -msgid "Capturing mouse buttons is very similar to handling key events. :ref:`@GlobalScope_ButtonList ` contains a list of ``BUTTON_*`` constants for each possible button, which will be reported in the event's ``button_index`` property. Note that the scrollwheel also counts as a button - two buttons, to be precise, with both ``BUTTON_WHEEL_UP`` and ``BUTTON_WHEEL_DOWN`` being separate events." -msgstr "" - -#: ../../docs/tutorials/inputs/input_examples.rst:202 -msgid "Mouse motion" +#: ../../docs/tutorials/inputs/input_examples.rst:178 +msgid "Keyboard events are captured in :ref:`InputEventKey `. While it's recommended to use input actions instead, there may be cases where you want to specifically look at key events. For this example, let's check for the :kbd:`T`:" msgstr "" #: ../../docs/tutorials/inputs/input_examples.rst:204 -msgid ":ref:`InputEventMouseMotion ` events occur whenever the mouse moves. You can find the move's distance with the ``relative`` property." +#: ../../docs/tutorials/inputs/input_examples.rst:242 +msgid "See :ref:`@GlobalScope_KeyList ` for a list of scancode constants." msgstr "" #: ../../docs/tutorials/inputs/input_examples.rst:208 +msgid "Keyboard modifiers" +msgstr "" + +#: ../../docs/tutorials/inputs/input_examples.rst:210 +msgid "Modifier properties are inherited from :ref:`InputEventWithModifiers `. This allows you to check for modifier combinations using boolean properties. Let's imagine you want one thing to happen when the :kbd:`T` is pressed, but something different when it's :kbd:`Shift + T`:" +msgstr "" + +#: ../../docs/tutorials/inputs/input_examples.rst:246 +msgid "Mouse events" +msgstr "" + +#: ../../docs/tutorials/inputs/input_examples.rst:248 +msgid "Mouse events stem from the :ref:`InputEventMouse ` class, and are separated into two types: :ref:`InputEventMouseButton ` and :ref:`InputEventMouseMotion `. Note that this means that all mouse events will contain a ``position`` property." +msgstr "" + +#: ../../docs/tutorials/inputs/input_examples.rst:254 +msgid "Mouse buttons" +msgstr "" + +#: ../../docs/tutorials/inputs/input_examples.rst:256 +msgid "Capturing mouse buttons is very similar to handling key events. :ref:`@GlobalScope_ButtonList ` contains a list of ``BUTTON_*`` constants for each possible button, which will be reported in the event's ``button_index`` property. Note that the scrollwheel also counts as a button - two buttons, to be precise, with both ``BUTTON_WHEEL_UP`` and ``BUTTON_WHEEL_DOWN`` being separate events." +msgstr "" + +#: ../../docs/tutorials/inputs/input_examples.rst:291 +msgid "Mouse motion" +msgstr "" + +#: ../../docs/tutorials/inputs/input_examples.rst:293 +msgid ":ref:`InputEventMouseMotion ` events occur whenever the mouse moves. You can find the move's distance with the ``relative`` property." +msgstr "" + +#: ../../docs/tutorials/inputs/input_examples.rst:297 msgid "Here's an example using mouse events to drag-and-drop a :ref:`Sprite ` node:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:234 +#: ../../docs/tutorials/inputs/input_examples.rst:355 msgid "Touch events" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:236 +#: ../../docs/tutorials/inputs/input_examples.rst:357 msgid "If you are using a touchscreen device, you can generate touch events. :ref:`InputEventScreenTouch ` is equivalent to a mouse click event, and :ref:`InputEventScreenDrag ` works much the same as mouse motion." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:241 +#: ../../docs/tutorials/inputs/input_examples.rst:362 msgid "To test your touch events on a non-touchscreen device, open Project Settings and go to the \"Input Devices/Pointing\" section. Enable \"Emulate Touch From Mouse\" and your project will interpret mouse clicks and motion as touch events." msgstr "" diff --git a/sphinx/templates/tutorials/inputs/inputevent.pot b/sphinx/templates/tutorials/inputs/inputevent.pot index 020ace94fd..9c35c58fcf 100644 --- a/sphinx/templates/tutorials/inputs/inputevent.pot +++ b/sphinx/templates/tutorials/inputs/inputevent.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot b/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot index f7d3e31faa..2d51c0d468 100644 --- a/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot +++ b/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/io/background_loading.pot b/sphinx/templates/tutorials/io/background_loading.pot index 63a945f19c..a77330285f 100644 --- a/sphinx/templates/tutorials/io/background_loading.pot +++ b/sphinx/templates/tutorials/io/background_loading.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/io/data_paths.pot b/sphinx/templates/tutorials/io/data_paths.pot index 166a59021c..6798d8ca76 100644 --- a/sphinx/templates/tutorials/io/data_paths.pot +++ b/sphinx/templates/tutorials/io/data_paths.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/io/encrypting_save_games.pot b/sphinx/templates/tutorials/io/encrypting_save_games.pot index d8d68224c8..118d7856c2 100644 --- a/sphinx/templates/tutorials/io/encrypting_save_games.pot +++ b/sphinx/templates/tutorials/io/encrypting_save_games.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/io/index.pot b/sphinx/templates/tutorials/io/index.pot index 844043be20..a182a2efe2 100644 --- a/sphinx/templates/tutorials/io/index.pot +++ b/sphinx/templates/tutorials/io/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/io/saving_games.pot b/sphinx/templates/tutorials/io/saving_games.pot index 1525e910cd..d907669088 100644 --- a/sphinx/templates/tutorials/io/saving_games.pot +++ b/sphinx/templates/tutorials/io/saving_games.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/legal/complying_with_licenses.pot b/sphinx/templates/tutorials/legal/complying_with_licenses.pot index 7793e617b7..210a2a9436 100644 --- a/sphinx/templates/tutorials/legal/complying_with_licenses.pot +++ b/sphinx/templates/tutorials/legal/complying_with_licenses.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/legal/index.pot b/sphinx/templates/tutorials/legal/index.pot index c334980e3e..f02dbd302a 100644 --- a/sphinx/templates/tutorials/legal/index.pot +++ b/sphinx/templates/tutorials/legal/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/math/beziers_and_curves.pot b/sphinx/templates/tutorials/math/beziers_and_curves.pot index 7e6589cfb4..8317626e48 100644 --- a/sphinx/templates/tutorials/math/beziers_and_curves.pot +++ b/sphinx/templates/tutorials/math/beziers_and_curves.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/math/index.pot b/sphinx/templates/tutorials/math/index.pot index 65d2a611c4..245bae5057 100644 --- a/sphinx/templates/tutorials/math/index.pot +++ b/sphinx/templates/tutorials/math/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/math/interpolation.pot b/sphinx/templates/tutorials/math/interpolation.pot index 5ad598faa2..71be325655 100644 --- a/sphinx/templates/tutorials/math/interpolation.pot +++ b/sphinx/templates/tutorials/math/interpolation.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/math/matrices_and_transforms.pot b/sphinx/templates/tutorials/math/matrices_and_transforms.pot index bd80cd308e..707ecb58ad 100644 --- a/sphinx/templates/tutorials/math/matrices_and_transforms.pot +++ b/sphinx/templates/tutorials/math/matrices_and_transforms.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,404 +25,410 @@ msgid "Introduction" msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:9 -msgid "Before reading this tutorial, it is advised to read the previous one about :ref:`doc_vector_math` as this one is a direct continuation." +msgid "Before reading this tutorial, we recommend that you thoroughly read and understand the :ref:`doc_vector_math` tutorial, as this tutorial requires a knowledge of vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:12 -msgid "This tutorial will be about *transformations* and will cover a little about matrices (but not in-depth)." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:13 +msgid "This tutorial is about *transformations* and how we represent them in Godot using matrices. It is not a full in-depth guide to matrices. Transformations are most of the time applied as translation, rotation, and scale, so we will focus on how to represent those with matrices." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:15 -msgid "Transformations are most of the time applied as translation, rotation and scale so they will be considered as priority here." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:19 -msgid "Oriented coordinate system (OCS)" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:18 +msgid "Most of this guide focuses on 2D, using :ref:`class_Transform2D` and :ref:`class_Vector2`, but the way things work in 3D is very similar." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:21 -msgid "Imagine we have a spaceship somewhere in space. In Godot this is easy, just move the ship somewhere and rotate it:" +msgid "As mentioned in the previous tutorial, it is important to remember that in Godot, the Y axis points *down* in 2D. This is the opposite of how most schools teach linear algebra, with the Y axis pointing up." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:26 -msgid "Ok, so in 2D this looks simple, a position and an angle for a rotation. But remember, we are grown ups here and don't use angles (plus, angles are not even that useful when working in 3D)." +msgid "The convention is that the X axis is red, the Y axis is green, and the Z axis is blue. This tutorial is color-coded to match these conventions, but we will also represent the origin vector with a blue color." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:30 -msgid "We should realize that at some point, someone *designed* this spaceship. Be it for 2D in a drawing such as Paint.net, Gimp, Photoshop, etc. or in 3D through a 3D DCC tool such as Blender, Max, Maya, etc." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:32 +msgid "Matrix components and the Identity matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:35 -msgid "When it was designed, it was not rotated. It was designed in its own *coordinate system*." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:34 +msgid "The identity matrix represents a transform with no translation, no rotation, and no scale. Let's start by looking at the identity matrix and how its components relate to how it visually appears." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:40 -msgid "This means that the tip of the ship has a coordinate, the fin has another, etc. Be it in pixels (2D) or vertices (3D)." +msgid "Matrices have rows and columns, and a transformation matrix has specific conventions on what each does." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:43 -msgid "So, let's recall again that the ship was somewhere in space:" +msgid "In the image above, we can see that the red X vector is represented by the first column of the matrix, and the green Y vector is likewise represented by the second column. A change to the columns will change these vectors. We will see how they can be manipulated in the next few examples." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:47 -msgid "How did it get there? What moved it and rotated it from the place it was designed to its current position? The answer is... a **transform**, the ship was *transformed* from their original position to the new one. This allows the ship to be displayed where it is." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:49 +msgid "You should not worry about manipulating rows directly, as we usually work with columns. However, you can think of the rows of the matrix as showing which vectors contribute to moving in a given direction." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:52 -msgid "But transform is too generic of a term to describe this process. To solve this puzzle, we will superimpose the ship's original design position at their current position:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:53 +msgid "When we refer to a value such as `t.x.y`, that's the Y component of the X column vector. In other words, the bottom-left of the matrix. Similarly, `t.x.x` is top-left, `t.y.x` is top-right,and `t.y.y` is bottom-right, where `t` is the Transform2D." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:58 -msgid "So, we can see that the \"design space\" has been transformed too. How can we best represent this transformation? Let's use 3 vectors for this (in 2D), a unit vector pointing towards X positive, a unit vector pointing towards Y positive and a translation." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:59 +msgid "Scaling the transformation matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:65 -msgid "Let's call the 3 vectors \"X\", \"Y\" and \"Origin\", and let's also superimpose them over the ship so it makes more sense:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:61 +msgid "Applying a scale is one of the easiest operations to understand. Let's start by placing the Godot logo underneath our vectors so that we can visually see the effects on an object:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:70 -msgid "Ok, this is nicer, but it still does not make sense. What do X,Y and Origin have to do with how the ship got there?" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:67 +msgid "Now, to scale the matrix, all we need to do is multiply each component by the scale we want. Let's scale it up by 2. 1 times 2 becomes 2, and 0 times 2 becomes 0, so we end up with this:" msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:73 -msgid "Well, let's take the point from top tip of the ship as reference:" +msgid "To do this in code, we can simply multiply each of the vectors:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:77 -msgid "And let's apply the following operation to it (and to all the points in the ship too, but we'll track the top tip as our reference point):" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:92 +msgid "If we wanted to return it to its original scale, we can multiply each component by 0.5. That's pretty much all there is to scaling a transformation matrix." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:89 -msgid "Doing this to the selected point will move it back to the center:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:96 +msgid "To calculate the object's scale from an existing transformation matrix, you can use `length()` on each of the column vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:93 -msgid "This was expected, but then let's do something more interesting. Use the dot product of X and the point, and add it to the dot product of Y and the point:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:99 +msgid "In actual projects, you can use the `scaled()` method to perform scaling." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:106 -msgid "Then what we have is.. wait a minute, it's the ship in its design position!" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:103 +msgid "Rotating the transformation matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:111 -msgid "How did this black magic happen? The ship was lost in space, and now it's back home!" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:105 +msgid "We'll start the same way as earlier, with the Godot logo underneath the identity matrix:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:114 -msgid "It might seem strange, but it does have plenty of logic. Remember, as we have seen in the :ref:`doc_vector_math`, what happened is that the distance to X axis, and the distance to Y axis were computed. Calculating distance in a direction or plane was one of the uses for the dot product. This was enough to obtain back the design coordinates for every point in the ship." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:110 +msgid "As an example, let's say we want to rotate our Godot logo clockwise by 90 degrees. Right now the X axis points right and the Y axis points down. If we rotate these in our head, we would logically see that the new X axis should point down and the new Y axis should point left." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:121 -msgid "So, what we have been working with so far (with X, Y and Origin) is an *Oriented Coordinate System*. X an Y are the **Basis**, and *Origin* is the offset." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:116 +msgid "You can imagine that you grab both the Godot logo and its vectors, and then spin it around the center. Wherever you finish spinning, the orientation of the vectors determines what the matrix is." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:126 -#: ../../docs/tutorials/math/matrices_and_transforms.rst:614 -msgid "Basis" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:120 +msgid "We need to represent \"down\" and \"left\" in normal coordinates, so means we'll set X to (0, 1) and Y to (-1, 0). These are also the values of `Vector2.DOWN` and `Vector2.LEFT`. When we do this, we get the desired result of rotating the object:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:128 -msgid "We know what the Origin is. It's where the 0,0 (origin) of the design coordinate system ended up after being transformed to a new position. This is why it's called *Origin*, But in practice, it's just an offset to the new position." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:127 +msgid "If you have trouble understanding the above, try this excercise: Cut a square of paper, draw X and Y vectors on top of it, place it on graph paper, then rotate it and note the endpoints." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:133 -msgid "The Basis is more interesting. The basis is the direction of X and Y in the OCS from the new, transformed location. It tells what has changed, in either 2D or 3D. The Origin (offset) and Basis (direction) communicate \"Hey, the original X and Y axes of your design are *right here*, pointing towards *these directions*.\"" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:131 +msgid "To perform rotation in code, we need to be able to calculate the values programatically. This image shows the formulas needed to calculate the transformation matrix from a rotation angle. Don't worry if this part seems complicated, I promise it's the hardest thing you need to know." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:139 -msgid "So, let's change the representation of the basis. Instead of 2 vectors, let's use a *matrix*." +msgid "Godot represents all rotations with radians, not degrees. A full turn is `TAU` or `PI*2` radians, and a quarter turn of 90 degrees is `TAU/4` or `PI/2` radians. Working with `TAU` usually results in more readable code." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:144 -msgid "The vectors are up there in the matrix, horizontally. The next problem now is that.. what is this matrix thing? Well, we'll assume you've never heard of a matrix." +msgid "Fun fact: In addition to Y being *down* in Godot, rotation is represented clockwise. This means that all the math and trig functions behave the same as a Y-is-up CCW system, since these differences \"cancel out\". You can think of rotations in both systems being \"from X to Y\"." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:149 -msgid "Transforms in Godot" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:150 +msgid "In order to perform a rotation of 0.5 radians (about 28.65 degrees), we simply plug in a value of 0.5 to the formula above and evaluate to find what the actual values should be:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:151 -msgid "This tutorial will not explain matrix math (and their operations) in depth, only its practical use. There is plenty of material for that, which should be a lot simpler to understand after completing this tutorial. We'll just explain how to use transforms." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:156 +msgid "Here's how that would be done in code (place the script on a Node2D):" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:157 -msgid "Transform2D" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:178 +msgid "To calculate the object's rotation from an existing transformation matrix, you can use `atan2(t.x.y, t.x.x)`, where t is the Transform2D." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:159 -msgid ":ref:`class_Transform2D` is a 3x2 matrix. It has 3 Vector2 elements and it's used for 2D. The \"X\" axis is the element 0, \"Y\" axis is the element 1 and \"Origin\" is element 2. It's not divided in basis/origin for convenience, due to its simplicity." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:179 -msgid "Most operations will be explained with this datatype (Transform2D), but the same logic applies to 3D." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:183 -msgid "Identity" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:181 +msgid "In actual projects, you can use the `rotated()` method to perform rotations." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:185 -msgid "An important transform is the \"identity\" matrix. This means:" +msgid "Basis of the transformation matrix" msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:187 -msgid "'X' Points right: Vector2(1,0)" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:188 -msgid "'Y' Points up (or down in pixels): Vector2(0,1)" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:189 -msgid "'Origin' is the origin Vector2(0,0)" +msgid "So far we have only been working with the `x` and `y`, vectors, which are in charge of representing rotation, scale, and/or shearing (advanced, covered at the end). The X and Y vectors are together called the *basis* of the transformation matrix. The terms \"basis\" and \"basis vectors\" are important to know." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:193 -msgid "It's easy to guess that an *identity* matrix is just a matrix that aligns the transform to its parent coordinate system. It's an *OCS* that hasn't been translated, rotated or scaled." +msgid "You might have noticed that :ref:`class_Transform2D` actually has three :ref:`class_Vector2` values: `x`, `y`, and `origin`. The `origin` value is not part of the basis, but it is part of the transform, and we need it to represent position. From now on we'll keep track of the origin vector in all examples. You can think of origin as another column, but it's often better to think of it as completely separate." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:220 -msgid "Operations" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:201 +msgid "Note that in 3D, Godot has a separate :ref:`class_Basis` structure for holding the three :ref:`class_Vector3` values of the basis, since the code can get complex and it makes sense to separate it from :ref:`class_Transform` (which is composed of one :ref:`class_Basis` and one extra :ref:`class_Vector3` for the origin)." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:223 -msgid "Rotation" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:208 +msgid "Translating the transformation matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:225 -msgid "Rotating Transform2D is done by using the \"rotated\" function:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:210 +msgid "Changing the `origin` vector is called a *translating* the transformation matrix. Translating is basically a technical term for \"moving\" the object, but it explicitly does not involve any rotation." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:214 +msgid "This should be fairly common sense, assuming that you read and understood the vector tutorial, but let's work through an example. Again, we'll start with the identity transform, but this time we'll also keep track of the origin vector:" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:221 +msgid "If we want the object to move to a position of (1, 2), we simply need to set its `origin` vector to (1, 2):" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:226 +msgid "There is also a `translated()` method, which performs a different operation to adding or changing `origin` directly. The `translated()` method will translate the object *relative to its own rotation*. For example, an object rotated 90 degrees clockwise will move to the right when `translated()` with `Vector2.UP`." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:232 +msgid "Godot's 2D uses coordinates based on pixels, so in actual projects you will want to translate by hundreds of units." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:236 +msgid "Putting it all together" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:238 +msgid "We're going to apply everything we mentioned so far onto one transform. To follow along, get a simple project with a Sprite set to the Godot logo." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:241 -msgid "Translation" +msgid "Let's set the translation to (350, 150), rotate by -0.5 rad, and scale by 3. I've posted a screenshot, and the code to reproduce it, but I encourage you to try and reproduce the screenshot without looking at the code!" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:243 -msgid "There are two ways to translate a Transform2D, the first one is moving the origin:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:280 +msgid "Shearing the transformation matrix (advanced)" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:263 -msgid "This will always work in global coordinates." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:265 -msgid "If instead, translation is desired in *local* coordinates of the matrix (towards where the *basis* is oriented), there is the :ref:`Transform2D.translated() ` method:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:282 +msgid "If you are only looking for how to *use* transformation matrices, feel free to skip this section of the tutorial. This section explores an uncommonly used aspect of transformation matrices for the purpose of building an understanding of them." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:287 -msgid "You could also transform the global coordinates to local coordinates manually:" +msgid "You may have noticed that a transform has more degrees of freedom than the combination of the above actions. The basis of a 2D transformation matrix has four total numbers in two :ref:`class_Vector2` values, while a rotation value and a Vector2 for scale only has 3 numbers. The high-level concept for the missing degree of freedom is called *shearing*." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:298 -msgid "But even better, there are helper functions for this as you can read in the next sections." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:293 +msgid "Normally you will always have the basis vectors perpendicular to each other. However, shearing can be useful in some situations, and understanding shearing helps you understand how transforms work." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:301 -msgid "Local to global coordinates and vice versa" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:297 +msgid "To show you visually how it will look, let's overlay a grid onto the Godot logo:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:303 -msgid "There are helper methods for converting between local and global coordinates." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:305 -msgid "There are :ref:`Node2D.to_local() ` and :ref:`Node2D.to_global() ` for 2D as well as :ref:`Spatial.to_local() ` and :ref:`Spatial.to_global() ` for 3D." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:302 +msgid "Each point on this grid is obtained by adding the basis vectors together. The bottom-right corner is X + Y, while the top-right corner is X - Y. If we change the basis vectors, the entire grid moves with it, as the grid is composed of the basis vectors. All lines on the grid that are currently parallel will remain parallel no matter what changes we make to the basis vectors." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:309 -msgid "Scale" +msgid "As an example, let's set Y to (1, 1):" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:311 -msgid "A matrix can be scaled too. Scaling will multiply the basis vectors by a vector (X vector by x component of the scale, Y vector by y component of the scale). It will leave the origin alone:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:328 +msgid "You can't set the raw values of a Transform2D in the editor, so you *must* use code if you want to shear the object." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:330 -msgid "These kind of operations in matrices are accumulative. It means every one starts relative to the previous one. For those who have been living on this planet long enough, a good reference of how transform works is this:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:331 +msgid "Due to the vectors no longer being perpendicular, the object has been sheared. The bottom-center of the grid, which is (0, 1) relative to itself, is now located at a world position of (1, 1)." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:337 -msgid "A matrix is used similarly to a turtle. The turtle most likely had a matrix inside (and you are likely learning this many years *after* discovering Santa is not real)." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:335 +msgid "The intra-object coordinates are called UV coordinates in textures, so let's borrow that terminology for here. To find the world position from a relative position, the formula is U * X + V * Y, where U and V are numbers and X and Y are the basis vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:342 -#: ../../docs/tutorials/math/matrices_and_transforms.rst:703 -msgid "Transform" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:340 +msgid "The bottom-right corner of the grid, which is always at the UV position of (1, 1), is at the world position of (2, 1), which is calculated from X*1 + Y*1, which is (1, 0) + (1, 1), or (1 + 1, 0 + 1), or (2, 1). This matches up with our observation of where the bottom-right corner of the image is." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:344 -msgid "Transform is the act of switching between coordinate systems. To convert a position (either 2D or 3D) from \"designer\" coordinate system to the OCS, the \"xform\" method is used." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:346 +msgid "Similarly, the top-right corner of the grid, which is always at the UV position of (1, -1), is at the world position of (0, -1), which is calculated from X*1 + Y*-1, which is (1, 0) - (1, 1), or (1 - 1, 0 - 1), or (0, -1). This matches up with our observation of where the top-right corner of the image is." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:357 -msgid "And only for basis (no translation):" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:352 +msgid "Hopefully you now fully understand the how a transformation matrix affects the object, and the relationship between the basis vectors and how the object's \"UV\" or \"intra-coordinates\" have their world position changed." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:369 -msgid "Inverse transform" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:356 +msgid "In Godot, all transform math is done relative to the parent node. When we refer to \"world position\", that would be relative to the node's parent instead, if the node had a parent." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:360 +msgid "If you would like additional explanation, you should check out 3Blue1Brown's excellent video about linear transformations: https://www.youtube.com/watch?v=kYB8IZa5AuE" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:365 +msgid "Practical applications of transforms" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:367 +msgid "In actual projects, you will usually be working with transforms inside transforms by having multiple :ref:`class_Node2D` or :ref:`class_Spatial` nodes parented to each other." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:371 -msgid "To do the opposite operation (what we did up there with the rocket), the \"xform_inv\" method is used:" +msgid "However, sometimes it's very useful to manually calculate the values we need. We will go over how you could use :ref:`class_Transform2D` or :ref:`class_Transform` to manually calculate transforms of nodes." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:376 +msgid "Converting positions between transforms" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:378 +msgid "There are many cases where you'd want to convert a position in and out of a transform. For example, if you have a position relative to the player and would like to find the world (parent-relative) position, or if you have a world position and want to know where it is relative to the player." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:383 -msgid "Only for Basis:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:395 -msgid "Orthonormal matrices" +msgid "We can find what a vector relative to the player would be defined in world space as using the \"xform\" method:" msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:397 -msgid "However, if the matrix has been scaled (vectors are not unit length), or the basis vectors are not orthogonal (90°), the inverse transform will not work." +msgid "And we can use the \"xform_inv\" method to find a what world space position would be if it was instead defined relative to the player:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:401 -msgid "In other words, inverse transform is only valid in *orthonormal* matrices. For this, these cases an affine inverse must be computed." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:411 +msgid "If you know in advance that the transform is positioned at (0, 0), you can use the \"basis_xform\" or \"basis_xform_inv\" methods instead, which skip dealing with translation." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:404 -msgid "The transform, or inverse transform of an identity matrix will return the position unchanged:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:416 +msgid "Moving an object relative to itself" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:419 -msgid "Affine inverse" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:418 +msgid "A common operation, especially in 3D games, is to move an object relative to itself. For example, in first-person shooter games, you would want the character to move forward (-Z axis) when you press :kbd:`W`." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:421 -msgid "The affine inverse is a matrix that does the inverse operation of another matrix, no matter if the matrix has scale or the axis vectors are not orthogonal. The affine inverse is calculated with the affine_inverse() method:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:422 +msgid "Since the basis vectors are the orientation relative to the parent, and the origin vector is the position relative to the parent, we can simply add multiples of the basis vectors to move an object relative to itself." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:426 +msgid "This code moves an object 100 units to its own right:" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:439 +msgid "For moving in 3D, you would need to replace \"x\" with \"basis.x\"." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:441 -msgid "If the matrix is orthonormal, then:" +msgid "In actual projects, you can use `translate_object_local` in 3D or `move_local_x` and `move_local_y` in 2D to do this." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:445 +msgid "Applying transforms onto transforms" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:447 +msgid "One of the most important things to know about transforms is how you can use several of them together. A parent node's transform affects all of its children. Let's dissect an example." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:451 +msgid "In this image, the child node has a \"2\" after the component names to distinguish them from the parent node. It might look a bit overwhelming with so many numbers, but remember that each number is displayed twice (next to the arrows and also in the matrices), and that almost half of the numbers are zero." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:459 -msgid "Matrix multiplication" +msgid "The only transformations going on here are that the parent node has been given a scale of (2, 1), the child has been given a scale of (0.5, 0.5), and both nodes have been given positions." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:461 -msgid "Matrices can be multiplied. Multiplication of two matrices \"chains\" (concatenates) their transforms." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:463 +msgid "All child transformations are affected by the parent transformations. The child has a scale of (0.5, 0.5), so you would expect it to be a 1:1 ratio square, and it is, but only relative to the parent. The child's X vector ends up being (1, 0) in world space, because it is scaled by the parent's basis vectors. Similarly, the child node's `origin` vector is set to (1, 1), but this actually moves it (2, 1) in world space, due to the parent node's basis vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:464 -msgid "However, as per convention, multiplication takes place in reverse order." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:472 +msgid "To calculate a child transform's world space transform manually, this is the code we would use:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:467 -msgid "Example:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:510 +msgid "In actual projects, we can find the world transform of the child by applying one transform onto another using the `*` operator:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:478 -msgid "To make it a little clearer, this:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:532 +msgid "When multiplying matrices, order matters! Don't mix them up." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:491 -msgid "Is the same as:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:504 -msgid "However, this is not the same:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:517 -msgid "Because in matrix math, A * B is not the same as B * A." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:520 -msgid "Multiplication by inverse" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:522 -msgid "Multiplying a matrix by its inverse, results in identity:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:534 +msgid "Lastly, applying the identity transform will always do nothing." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:536 -msgid "Multiplication by identity" +msgid "If you would like additional explanation, you should check out 3Blue1Brown's excellent video about matrix composition: https://www.youtube.com/watch?v=XkY2DOUCWMU" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:538 -msgid "Multiplying a matrix by identity, will result in the unchanged matrix:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:541 +msgid "Inverting a transformation matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:552 -msgid "Matrix tips" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:543 +msgid "The \"affine_inverse\" function returns a transform that \"undoes\" the previous transform. This can be useful in some situations, but it's easier to just provide a few examples." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:554 -msgid "When using a transform hierarchy, remember that matrix multiplication is reversed! To obtain the global transform for a hierarchy, do:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:547 +msgid "Multiplying an inverse transform by the normal transform undoes all transformations:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:566 -msgid "For 3 levels:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:563 +msgid "Transforming a position by a transform and its inverse results in the same position (same for \"xform_inv\"):" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:577 -msgid "To make a matrix relative to the parent, use the affine inverse (or regular inverse for orthonormal matrices)." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:582 +msgid "How does it all work in 3D?" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:591 -msgid "Revert it just like the example above:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:584 +msgid "One of the great things about transformation matrices is that they work very similarly between 2D and 3D transformations. All of the code and formulas used above for 2D work the same in 3D, with 3 exceptions: the addition of a third axis, that each axis is of type :ref:`class_Vector3`, and also that Godot stores the :ref:`class_Basis` separately from the :ref:`class_Transform`, since the math can get complex and it makes sense to separate it." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:604 -msgid "OK, hopefully this should be enough! Let's complete the tutorial by moving to 3D matrices." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:592 +msgid "All of the concepts for how translation, rotation, scale, and shearing work in 3D are all the same compared to 2D. To scale, we take each component and multiply it; to rotate, we change where each basis vector is pointing; to translate, we manipulate the origin; and to shear, we change the basis vectors to be non-perpendicular." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:608 -msgid "Matrices & transforms in 3D" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:600 +msgid "If you would like, it's a good idea to play around with transforms to get an understanding of how they work. Godot allows you to edit 3D transform matrices directly from the inspector. You can download this project which has colored lines and cubes to help visualize the :ref:`class_Basis` vectors and the origin in both 2D and 3D: https://github.com/godotengine/godot-demo-projects/tree/master/misc/matrix_transform" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:610 -msgid "As mentioned before, for 3D, we deal with 3 :ref:`Vector3 ` vectors for the rotation matrix, and an extra one for the origin." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:607 +msgid "Spatial's \"Matrix\" section in Godot 3.2's inspector displays the matrix as transposed, with the columns horizontal and the rows vertical. This may be changed to be less confusing in a future release of Godot." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:616 -msgid "Godot has a special type for a 3x3 matrix, named :ref:`Basis `. It can be used to represent a 3D rotation and scale. Sub vectors can be accessed as:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:612 +msgid "You cannot edit Node2D's transform matrix directly in Godot 3.2's inspector. This may be changed in a future release of Godot." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:635 -msgid "Or, alternatively as:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:615 +msgid "If you would like additional explanation, you should check out 3Blue1Brown's excellent video about 3D linear transformations: https://www.youtube.com/watch?v=rHLEWRxRGiM" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:652 -msgid "The Identity Basis has the following values:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:620 +msgid "Representing rotation in 3D (advanced)" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:656 -msgid "And can be accessed like this:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:622 +msgid "The biggest difference between 2D and 3D transformation matrices is how you represent rotation by itself without the basis vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:680 -msgid "Rotation in 3D" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:625 +msgid "With 2D, we have an easy way (atan2) to switch between a transformation matrix and an angle. In 3D, we can't simply represent rotation as one number. There is something called Euler angles, which can represent rotations as a set of 3 numbers, however they are limited and not very useful, except for trivial cases." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:682 -msgid "Rotation in 3D is more complex than in 2D (translation and scale are the same), because rotation is an implicit 2D operation. To rotate in 3D, an *axis*, must be picked. Rotation, then, happens around this axis." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:631 +msgid "In 3D we do not typically use angles, we either use a transformation basis (used pretty much everywhere in Godot), or we use quaternions. Godot can represent quaternions using the :ref:`class_Quat` struct. My suggestion to you is to completely ignore how they work under-the-hood, because they are very complicated and unintuitive." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:686 -msgid "The axis for the rotation must be a *normal vector*. As in, a vector that can point to any direction, but length must be one (1.0)." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:637 +msgid "However, if you really must know how it works, here are some great resources, which you can follow in order:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:705 -msgid "To add the final component to the mix, Godot provides the :ref:`Transform ` type. Transform has two members:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:640 +msgid "https://www.youtube.com/watch?v=mvmuCPvRoWQ" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:708 -msgid "*basis* (of type :ref:`Basis `)" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:642 +msgid "https://www.youtube.com/watch?v=d4EgbgTm0Bg" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:709 -msgid "*origin* (of type :ref:`Vector3 `)" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:711 -msgid "Any 3D transform can be represented with Transform, and the separation of basis and origin makes it easier to work translation and rotation separately." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:715 -msgid "An example:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:644 +msgid "https://eater.net/quaternions" msgstr "" diff --git a/sphinx/templates/tutorials/math/vector_math.pot b/sphinx/templates/tutorials/math/vector_math.pot index 557cf4ac92..5da60b27bc 100644 --- a/sphinx/templates/tutorials/math/vector_math.pot +++ b/sphinx/templates/tutorials/math/vector_math.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/math/vectors_advanced.pot b/sphinx/templates/tutorials/math/vectors_advanced.pot index 8cc9ec97b9..fa6ee366ff 100644 --- a/sphinx/templates/tutorials/math/vectors_advanced.pot +++ b/sphinx/templates/tutorials/math/vectors_advanced.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/binary_serialization_api.pot b/sphinx/templates/tutorials/misc/binary_serialization_api.pot index b8503ec636..02573dd5e0 100644 --- a/sphinx/templates/tutorials/misc/binary_serialization_api.pot +++ b/sphinx/templates/tutorials/misc/binary_serialization_api.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/change_scenes_manually.pot b/sphinx/templates/tutorials/misc/change_scenes_manually.pot index 93097ccc08..97b6ce0e40 100644 --- a/sphinx/templates/tutorials/misc/change_scenes_manually.pot +++ b/sphinx/templates/tutorials/misc/change_scenes_manually.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/gles2_gles3_differences.pot b/sphinx/templates/tutorials/misc/gles2_gles3_differences.pot index 9cbaf0009b..c55a3f2ce7 100644 --- a/sphinx/templates/tutorials/misc/gles2_gles3_differences.pot +++ b/sphinx/templates/tutorials/misc/gles2_gles3_differences.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -73,7 +73,7 @@ msgid "HDR" msgstr "" #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:49 -msgid "GLES is not capable of using High Dynamic Range (HDR) rendering features. If HDR is set for your project, or for a given viewport, Godot will still user Low Dynamic Range (LDR) which limits viewport values to the ``0-1`` range." +msgid "GLES2 is not capable of using High Dynamic Range (HDR) rendering features. If HDR is set for your project, or for a given viewport, Godot will still user Low Dynamic Range (LDR) which limits viewport values to the ``0-1`` range." msgstr "" #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:54 diff --git a/sphinx/templates/tutorials/misc/handling_quit_requests.pot b/sphinx/templates/tutorials/misc/handling_quit_requests.pot index be787fcbbb..0da56c6e43 100644 --- a/sphinx/templates/tutorials/misc/handling_quit_requests.pot +++ b/sphinx/templates/tutorials/misc/handling_quit_requests.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/index.pot b/sphinx/templates/tutorials/misc/index.pot index 4aae27ff1e..403e85fc56 100644 --- a/sphinx/templates/tutorials/misc/index.pot +++ b/sphinx/templates/tutorials/misc/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/instancing_with_signals.pot b/sphinx/templates/tutorials/misc/instancing_with_signals.pot index 053d879969..7ec7dc1756 100644 --- a/sphinx/templates/tutorials/misc/instancing_with_signals.pot +++ b/sphinx/templates/tutorials/misc/instancing_with_signals.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/jitter_stutter.pot b/sphinx/templates/tutorials/misc/jitter_stutter.pot index f3804849c1..c671630329 100644 --- a/sphinx/templates/tutorials/misc/jitter_stutter.pot +++ b/sphinx/templates/tutorials/misc/jitter_stutter.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/pausing_games.pot b/sphinx/templates/tutorials/misc/pausing_games.pot index ed1fcfaf31..ccbca6dc3c 100644 --- a/sphinx/templates/tutorials/misc/pausing_games.pot +++ b/sphinx/templates/tutorials/misc/pausing_games.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/running_code_in_the_editor.pot b/sphinx/templates/tutorials/misc/running_code_in_the_editor.pot index 3c974559f1..4e8dc49ccc 100644 --- a/sphinx/templates/tutorials/misc/running_code_in_the_editor.pot +++ b/sphinx/templates/tutorials/misc/running_code_in_the_editor.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/state_design_pattern.pot b/sphinx/templates/tutorials/misc/state_design_pattern.pot new file mode 100644 index 0000000000..a43dd2d328 --- /dev/null +++ b/sphinx/templates/tutorials/misc/state_design_pattern.pot @@ -0,0 +1,130 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2020, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:4 +msgid "State design pattern" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:7 +msgid "Introduction" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:9 +msgid "Scripting a game can be difficult when there are many states that need to handled, but only one script can be attached to a node at a time. Instead of creating a state machine within the player's control script, it would make development simpler if the states were separated out into different classes." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:14 +msgid "There are many ways to implement a state machine with Godot, and some other methods are below:" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:16 +msgid "The player can have a child node for each state, which are called when utilized." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:17 +msgid "Enums can be used in conjunction with a match statement." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:18 +msgid "The state scripts themselves could be swapped out from a node dynamically at run-time." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:20 +msgid "This tutorial will focus only on adding and removing nodes which have a state script attached. Each state script will be an implementation of a different state." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:24 +msgid "There is a great resource explaining the concept of the state design pattern here: https://gameprogrammingpatterns.com/state.html" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:28 +msgid "Script setup" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:30 +msgid "The feature of inheritance is useful for getting started with this design principle. A class should be created that describes the base features of the player. For now, a player will be limited to two actions: **move left**, **move right**. This means there will be two states: **idle** and **run**." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:35 +msgid "Below is the generic state, from which all other states will inherit." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:66 +msgid "A few notes on the above script. First, this implementation uses a ``setup(change_state, animated_sprite, persistent_state)`` method to assign references. These references will be instantiated in the parent of this state. This helps with something in programming known as *cohesion*. The state of the player does not want the responsibility of creating these variables, but does want to be able to use them. However, this does make the state *coupled* to the state's parent. This means that the state is highly reliant on whether it has a parent which contains these variables. So, remember that *coupling* and *cohesion* are important concepts when it comes to code management." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:75 +msgid "See the following page for more details on cohesion and coupling: https://courses.cs.washington.edu/courses/cse403/96sp/coupling-cohesion.html" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:78 +msgid "Second, there are some methods in the script for moving, but no implementation. The state script just uses ``pass`` to show that it will not execute any instructions when the methods are called. This is important." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:81 +msgid "Third, the ``_physics_process(delta)`` method is actually implemented here. This allows the states to have a default ``_phyics_process(delta)`` implementation where ``velocity`` is used to move the player. The way that the states can modify the movement of the player is to use the ``velocity`` variable defined in their base class." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:85 +msgid "Finally, this script is actually being designated as a class named ``State``. This makes refactoring the code easier, since the file path from using the ``load()`` and ``preload()`` functions in godot will not be needed." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:88 +msgid "So, now that there is a base state, the two states discussed earlier can be implemented." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:154 +msgid "The since the ``Run`` and ``Idle`` states extend from ``State`` which extends ``Node2D``, the function ``_physics_process(delta)`` is called from the **bottom-up** meaning ``Run`` and ``Idle`` will call their implementation of ``_physics_process(delta)``, then ``State`` will call its implementation, then ``Node2D`` will call its own implementation and so on. This may seem strange, but it is only relevant for predefined functions such as ``_ready()``, ``_process(delta)``, etc. Custom functions use the normal inheritance rules of overriding the base implementation." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:161 +msgid "There is a round-about method for obtaining a state instance. A state factory can be used." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:184 +msgid "This will look for states in a dictionary and return the state if found." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:186 +msgid "Now that all the states are defined with their own scripts, it is time to figure out how those references that passed to them will be instantiated. Since these references will not change it makes sense to call this new script ``persistent_state.gd``." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:229 +msgid "The ``persistent_state.gd`` script contains code for detecting input. This was to make the tutorial simple, but it is not usually best practice to do this." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:233 +msgid "Project setup" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:235 +msgid "This tutorial made an assumption that the node it would be attached to contained a child node which is an :ref:`AnimatedSprite `. There is also the assumption that this :ref:`AnimatedSprite ` has at least two animations, the idle and run animations. Also, the top-level node is assumed to be a :ref:`KinematicBody2D `." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:242 +msgid "The zip file of the llama used in this tutorial is :download:`here `. The source was from `piskel_llama `_, but I couldn't find the original creator information on that page though... There is also a good tutorial for sprite animation already. See :ref:`2D Sprite Animation `." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:247 +msgid "So, the only script that must be attached is ``persistent_state.gd``, which should be attached to the top node of the player, which is a :ref:`KinematicBody2D `." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:254 +msgid "Now the player has utilized the state design pattern to implement its two different states. The nice part of this pattern is that if one wanted to add another state, then it would involve creating another class that need only focus on itself and how it changes to another state. Each state is functionally separated and instantiated dynamically." +msgstr "" + diff --git a/sphinx/templates/tutorials/networking/high_level_multiplayer.pot b/sphinx/templates/tutorials/networking/high_level_multiplayer.pot index 4fa30c71a4..90d680330f 100644 --- a/sphinx/templates/tutorials/networking/high_level_multiplayer.pot +++ b/sphinx/templates/tutorials/networking/high_level_multiplayer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -57,11 +57,11 @@ msgid "Most of Godot's supported platforms offer all or most of the mentioned hi msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:34 -msgid "More about TCP/IP, UDP, and networking: https://gafferongames.com/post/udp_vs_tcp/" +msgid "More about TCP/IP, UDP, and networking: https://web.archive.org/web/20190406162102/https://gafferongames.com/post/udp_vs_tcp/" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:37 -msgid "Gaffer On Games has a lot of useful articles about networking in Games (`here `__), including the comprehensive `introduction to networking models in games `__." +msgid "Gaffer On Games has a lot of useful articles about networking in Games (`here `__), including the comprehensive `introduction to networking models in games `__." msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:41 @@ -85,334 +85,334 @@ msgid "Before going into how we would like to synchronize a game across the netw msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:59 -msgid "Godot uses a mid-level object :ref:`NetworkedMultiplayerPeer `. This object is not meant to be created directly, but is designed so that several implementations can provide it:" +msgid "Godot uses a mid-level object :ref:`NetworkedMultiplayerPeer `. This object is not meant to be created directly, but is designed so that several implementations can provide it." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:64 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:62 msgid "This object extends from :ref:`PacketPeer `, so it inherits all the useful methods for serializing, sending and receiving data. On top of that, it adds methods to set a peer, transfer mode, etc. It also includes signals that will let you know when peers connect or disconnect." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:66 -msgid "This class interface can abstract most types of network layers, topologies and libraries. By default, Godot provides an implementation based on ENet (:ref:`NetworkedMultiplayerEnet `), but this could be used to implement mobile APIs (for adhoc WiFi, Bluetooth) or custom device/console-specific networking APIs." +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:64 +msgid "This class interface can abstract most types of network layers, topologies and libraries. By default, Godot provides an implementation based on ENet (:ref:`NetworkedMultiplayerEnet `), one based on WebRTC (:ref:`WebRTCMultiplayer `), and one based on WebSocket (:ref:`WebSocketMultiplayerPeer `), but this could be used to implement mobile APIs (for adhoc WiFi, Bluetooth) or custom device/console-specific networking APIs." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:69 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:70 msgid "For most common cases, using this object directly is discouraged, as Godot provides even higher level networking facilities. Yet it is made available in case a game has specific needs for a lower level API." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:73 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:74 msgid "Initializing the network" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:75 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:76 msgid "The object that controls networking in Godot is the same one that controls everything tree-related: :ref:`SceneTree `." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:77 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:78 msgid "To initialize high level networking, the SceneTree must be provided a NetworkedMultiplayerPeer object." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:79 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:80 msgid "To create that object, it first has to be initialized as a server or client." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:81 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:82 msgid "Initializing as a server, listening on the given port, with a given maximum number of peers:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:89 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:90 msgid "Initializing as a client, connecting to a given IP and port:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:97 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:98 msgid "Get the previously set network peer:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:103 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:104 msgid "Checking whether the tree is initialized as a server or client:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:109 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:110 msgid "Terminating the networking feature:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:115 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:116 msgid "(Although it may make sense to send a message first to let the other peers know you're going away instead of letting the connection close or timeout, depending on your game.)" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:118 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:119 msgid "Managing connections" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:120 -msgid "Some games accept connections at any time, others during the lobby phase. Godot can be requested to no longer accept connections at any point (see `set_refuse_new_network_connections(bool)` and related methods on :ref:`SceneTree `). To manage who connects, Godot provides the following signals in SceneTree:" +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:121 +msgid "Some games accept connections at any time, others during the lobby phase. Godot can be requested to no longer accept connections at any point (see ``set_refuse_new_network_connections(bool)`` and related methods on :ref:`SceneTree `). To manage who connects, Godot provides the following signals in SceneTree:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:123 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:124 msgid "Server and Clients:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:125 -msgid "`network_peer_connected(int id)`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:126 -msgid "`network_peer_disconnected(int id)`" +msgid "``network_peer_connected(int id)``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:128 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:127 +msgid "``network_peer_disconnected(int id)``" +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:129 msgid "The above signals are called on every peer connected to the server (including on the server) when a new peer connects or disconnects. Clients will connect with a unique ID greater than 1, while network peer ID 1 is always the server. Anything below 1 should be handled as invalid. You can retrieve the ID for the local system via :ref:`SceneTree.get_network_unique_id() `. These IDs will be useful mostly for lobby management and should generally be stored, as they identify connected peers and thus players. You can also use IDs to send messages only to certain peers." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:134 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:135 msgid "Clients:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:136 -msgid "`connected_to_server`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:137 -msgid "`connection_failed`" +msgid "``connected_to_server``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:138 -msgid "`server_disconnected`" +msgid "``connection_failed``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:140 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:139 +msgid "``server_disconnected``" +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:141 msgid "Again, all these functions are mainly useful for lobby management or for adding/removing players on the fly. For these tasks, the server clearly has to work as a server and you have to perform tasks manually such as sending a newly connected player information about other already connected players (e.g. their names, stats, etc)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:144 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:145 msgid "Lobbies can be implemented any way you want, but the most common way is to use a node with the same name across scenes in all peers. Generally, an autoloaded node/singleton is a great fit for this, to always have access to, e.g. \"/root/lobby\"." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:148 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:149 msgid "RPC" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:150 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:151 msgid "To communicate between peers, the easiest way is to use RPCs (remote procedure calls). This is implemented as a set of functions in :ref:`Node `:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:153 -msgid "`rpc(\"function_name\", )`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:154 -msgid "`rpc_id(,\"function_name\", )`" +msgid "``rpc(\"function_name\", )``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:155 -msgid "`rpc_unreliable(\"function_name\", )`" +msgid "``rpc_id(,\"function_name\", )``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:156 -msgid "`rpc_unreliable_id(, \"function_name\", )`" +msgid "``rpc_unreliable(\"function_name\", )``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:158 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:157 +msgid "``rpc_unreliable_id(, \"function_name\", )``" +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:159 msgid "Synchronizing member variables is also possible:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:160 -msgid "`rset(\"variable\", value)`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:161 -msgid "`rset_id(, \"variable\", value)`" +msgid "``rset(\"variable\", value)``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:162 -msgid "`rset_unreliable(\"variable\", value)`" +msgid "``rset_id(, \"variable\", value)``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:163 -msgid "`rset_unreliable_id(, \"variable\", value)`" +msgid "``rset_unreliable(\"variable\", value)``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:165 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:164 +msgid "``rset_unreliable_id(, \"variable\", value)``" +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:166 msgid "Functions can be called in two fashions:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:167 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:168 msgid "Reliable: the function call will arrive no matter what, but may take longer because it will be re-transmitted in case of failure." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:168 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:169 msgid "Unreliable: if the function call does not arrive, it will not be re-transmitted; but if it arrives, it will do it quickly." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:170 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:171 msgid "In most cases, reliable is desired. Unreliable is mostly useful when synchronizing object positions (sync must happen constantly, and if a packet is lost, it's not that bad because a new one will eventually arrive and it would likely be outdated because the object moved further in the meantime, even if it was resent reliably)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:173 -msgid "There is also the `get_rpc_sender_id` function in `SceneTree`, which can be used to check which peer (or peer ID) sent an RPC." +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:174 +msgid "There is also the ``get_rpc_sender_id`` function in ``SceneTree``, which can be used to check which peer (or peer ID) sent an RPC." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:176 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:177 msgid "Back to lobby" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:178 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:179 msgid "Let's get back to the lobby. Imagine that each player that connects to the server will tell everyone about it." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:224 -msgid "You might have already noticed something different, which is the usage of the `remote` keyword on the `register_player` function:" +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:225 +msgid "You might have already noticed something different, which is the usage of the ``remote`` keyword on the ``register_player`` function:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:230 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:231 msgid "This keyword has two main uses. The first is to let Godot know that this function can be called from RPC. If no keywords are added, Godot will block any attempts to call functions for security. This makes security work a lot easier (so a client can't call a function to delete a file on another client's system)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:234 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:235 msgid "The second use is to specify how the function will be called via RPC. There are four different keywords:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:236 -msgid "`remote`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:237 -msgid "`remotesync`" +msgid "``remote``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:238 -msgid "`master`" +msgid "``remotesync``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:239 -msgid "`puppet`" +msgid "``master``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:241 -msgid "The `remote` keyword means that the `rpc()` call will go via network and execute remotely." +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:240 +msgid "``puppet``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:243 -msgid "The `remotesync` keyword means that the `rpc()` call will go via network and execute remotely, but will also execute locally (do a normal function call)." +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:242 +msgid "The ``remote`` keyword means that the ``rpc()`` call will go via network and execute remotely." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:245 -msgid "The others will be explained further down. Note that you could also use the `get_rpc_sender_id` function on `SceneTree` to check which peer actually made the RPC call to `register_player`." +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:244 +msgid "The ``remotesync`` keyword means that the ``rpc()`` call will go via network and execute remotely, but will also execute locally (do a normal function call)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:248 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:246 +msgid "The others will be explained further down. Note that you could also use the ``get_rpc_sender_id`` function on ``SceneTree`` to check which peer actually made the RPC call to ``register_player``." +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:249 msgid "With this, lobby management should be more or less explained. Once you have your game going, you will most likely want to add some extra security to make sure clients don't do anything funny (just validate the info they send from time to time, or before game start). For the sake of simplicity and because each game will share different information, this is not shown here." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:253 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:254 msgid "Starting the game" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:255 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:256 msgid "Once enough players have gathered in the lobby, the server should probably start the game. This is nothing special in itself, but we'll explain a few nice tricks that can be done at this point to make your life much easier." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:259 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:260 msgid "Player scenes" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:261 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:262 msgid "In most games, each player will likely have its own scene. Remember that this is a multiplayer game, so in every peer you need to instance **one scene for each player connected to it**. For a 4 player game, each peer needs to instance 4 player nodes." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:264 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:265 msgid "So, how to name such nodes? In Godot, nodes need to have a unique name. It must also be relatively easy for a player to tell which node represents each player ID." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:267 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:268 msgid "The solution is to simply name the *root nodes of the instanced player scenes as their network ID*. This way, they will be the same in every peer and RPC will work great! Here is an example:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:296 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:297 msgid "Depending on when you execute pre_configure_game(), you may need to change any calls to ``add_child()`` to be deferred via ``call_deferred()``, as the SceneTree is locked while the scene is being created (e.g. when ``_ready()`` is being called)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:300 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:301 msgid "Synchronizing game start" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:302 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:303 msgid "Setting up players might take different amounts of time for every peer due to lag, different hardware, or other reasons. To make sure the game will actually start when everyone is ready, pausing the game until all players are ready can be useful:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:311 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:312 msgid "When the server gets the OK from all the peers, it can tell them to start, as for example:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:332 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:333 msgid "Synchronizing the game" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:334 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:335 msgid "In most games, the goal of multiplayer networking is that the game runs synchronized on all the peers playing it. Besides supplying an RPC and remote member variable set implementation, Godot adds the concept of network masters." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:338 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:339 msgid "Network master" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:340 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:341 msgid "The network master of a node is the peer that has the ultimate authority over it." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:342 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:343 msgid "When not explicitly set, the network master is inherited from the parent node, which if not changed, is always going to be the server (ID 1). Thus the server has authority over all nodes by default." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:344 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:345 msgid "The network master can be set with the function :ref:`Node.set_network_master(id, recursive) ` (recursive is ``true`` by default and means the network master is recursively set on all child nodes of the node as well)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:347 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:348 msgid "Checking that a specific node instance on a peer is the network master for this node for all connected peers is done by calling :ref:`Node.is_network_master() `. This will return ``true`` when executed on the server and ``false`` on all client peers." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:349 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:350 msgid "If you have paid attention to the previous example, it's possible you noticed that each peer was set to have network master authority for their own player (Node) instead of the server:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:369 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:370 msgid "Each time this piece of code is executed on each peer, the peer makes itself master on the node it controls, and all other nodes remain as puppets with the server being their network master." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:371 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:372 msgid "To clarify, here is an example of how this looks in the `bomber demo `_:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:378 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:379 msgid "Master and puppet keywords" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:382 -msgid "The real advantage of this model is when used with the `master`/`puppet` keywords in GDScript (or their equivalent in C# and Visual Script). Similarly to the `remote` keyword, functions can also be tagged with them:" +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:383 +msgid "The real advantage of this model is when used with the ``master``/``puppet`` keywords in GDScript (or their equivalent in C# and Visual Script). Similarly to the ``remote`` keyword, functions can also be tagged with them:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:385 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:386 msgid "Example bomb code:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:393 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:394 msgid "Example player code:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:407 -msgid "In the above example, a bomb explodes somewhere (likely managed by whoever is master). The bomb knows the bodies in the area, so it checks them and checks that they contain an `exploded` function." +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:408 +msgid "In the above example, a bomb explodes somewhere (likely managed by whoever is master). The bomb knows the bodies in the area, so it checks them and checks that they contain an ``exploded`` function." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:410 -msgid "If they do, the bomb calls `exploded` on it. However, the `exploded` method in the player has a `master` keyword. This means that only the player who is master for that instance will actually get the function." +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:411 +msgid "If they do, the bomb calls ``exploded`` on it. However, the ``exploded`` method in the player has a ``master`` keyword. This means that only the player who is master for that instance will actually get the function." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:413 -msgid "This instance, then, calls the `stun` method in the same instances of that same player (but in different peers), and only those which are set as puppet, making the player look stunned in all the peers (as well as the current, master one)." +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:414 +msgid "This instance, then, calls the ``stun`` method in the same instances of that same player (but in different peers), and only those which are set as puppet, making the player look stunned in all the peers (as well as the current, master one)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:416 -msgid "Note that you could also send the stun() message only to a specific player by using rpc_id(, \"exploded\", bomb_owner). This may not make much sense for an area-of-effect case like the bomb, but in other cases, like single target damage." +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:417 +msgid "Note that you could also send the ``stun()`` message only to a specific player by using ``rpc_id(, \"exploded\", bomb_owner)``. This may not make much sense for an area-of-effect case like the bomb, but in other cases, like single target damage." msgstr "" diff --git a/sphinx/templates/tutorials/networking/http_client_class.pot b/sphinx/templates/tutorials/networking/http_client_class.pot index c3d29ec8a7..7aa5aacbd2 100644 --- a/sphinx/templates/tutorials/networking/http_client_class.pot +++ b/sphinx/templates/tutorials/networking/http_client_class.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/http_request_class.pot b/sphinx/templates/tutorials/networking/http_request_class.pot index dfcf20b5a0..d8bb979dda 100644 --- a/sphinx/templates/tutorials/networking/http_request_class.pot +++ b/sphinx/templates/tutorials/networking/http_request_class.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/index.pot b/sphinx/templates/tutorials/networking/index.pot index 49e443be9d..1b029f2f54 100644 --- a/sphinx/templates/tutorials/networking/index.pot +++ b/sphinx/templates/tutorials/networking/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/ssl_certificates.pot b/sphinx/templates/tutorials/networking/ssl_certificates.pot index ea5c006a3f..4344baa4e3 100644 --- a/sphinx/templates/tutorials/networking/ssl_certificates.pot +++ b/sphinx/templates/tutorials/networking/ssl_certificates.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,7 +33,7 @@ msgid "For SSL to work, certificates need to be provided. A .crt file must be sp msgstr "" #: ../../docs/tutorials/networking/ssl_certificates.rst:21 -msgid "This file should contain any number of public certificates in https://en.wikipedia.org/wiki/Privacy-enhanced_Electronic_Mail format." +msgid "This file should contain any number of public certificates in `PEM format `__." msgstr "" #: ../../docs/tutorials/networking/ssl_certificates.rst:24 @@ -49,7 +49,7 @@ msgid "Approach 1: self signed cert" msgstr "" #: ../../docs/tutorials/networking/ssl_certificates.rst:34 -msgid "The first approach is the simplest: generate a private and public key pair, and put the public pair in the .crt file (again, in PEM format). The private key should go to your server." +msgid "The first approach is the simplest: generate a private and public key pair and add the public key (in PEM format) to the .crt file. The private key should go to your server." msgstr "" #: ../../docs/tutorials/networking/ssl_certificates.rst:38 diff --git a/sphinx/templates/tutorials/networking/webrtc.pot b/sphinx/templates/tutorials/networking/webrtc.pot index cfb23875a3..b90a873950 100644 --- a/sphinx/templates/tutorials/networking/webrtc.pot +++ b/sphinx/templates/tutorials/networking/webrtc.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/websocket.pot b/sphinx/templates/tutorials/networking/websocket.pot index 2437191d33..375c551ffe 100644 --- a/sphinx/templates/tutorials/networking/websocket.pot +++ b/sphinx/templates/tutorials/networking/websocket.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/index.pot b/sphinx/templates/tutorials/optimization/index.pot index 8c43bed472..371c317c39 100644 --- a/sphinx/templates/tutorials/optimization/index.pot +++ b/sphinx/templates/tutorials/optimization/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/using_multimesh.pot b/sphinx/templates/tutorials/optimization/using_multimesh.pot index 91b06c257c..781b2a058f 100644 --- a/sphinx/templates/tutorials/optimization/using_multimesh.pot +++ b/sphinx/templates/tutorials/optimization/using_multimesh.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/using_servers.pot b/sphinx/templates/tutorials/optimization/using_servers.pot index e742d961df..6b6df63477 100644 --- a/sphinx/templates/tutorials/optimization/using_servers.pot +++ b/sphinx/templates/tutorials/optimization/using_servers.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -144,43 +144,43 @@ msgstr "" msgid "This is a simple example of how to create a sprite from code and move it using the low-level :ref:`CanvasItem ` API." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:108 +#: ../../docs/tutorials/optimization/using_servers.rst:111 msgid "The Canvas Item API in the server allows you to add draw primitives to it. Once added, they can't be modified. The Item needs to be cleared and the primitives re-added (this is not the case for setting the transform, which can be done as many times as desired)." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:112 +#: ../../docs/tutorials/optimization/using_servers.rst:115 msgid "Primitives are cleared this way:" msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:121 +#: ../../docs/tutorials/optimization/using_servers.rst:124 msgid "Instantiating a Mesh into 3D space" msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:123 +#: ../../docs/tutorials/optimization/using_servers.rst:126 msgid "The 3D APIs are different than the 2D ones, so the instantiation API must be used." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:146 +#: ../../docs/tutorials/optimization/using_servers.rst:152 msgid "Creating a 2D RigidBody and moving a sprite with it" msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:148 +#: ../../docs/tutorials/optimization/using_servers.rst:154 msgid "This creates a :ref:`RigidBody2D ` using the :ref:`Physics2DServer ` API, and moves a :ref:`CanvasItem ` when the body moves." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:176 +#: ../../docs/tutorials/optimization/using_servers.rst:186 msgid "The 3D version should be very similar, as 2D and 3D physics servers are identical (using :ref:`RigidBody ` and :ref:`PhysicsServer ` respectively)." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:180 +#: ../../docs/tutorials/optimization/using_servers.rst:190 msgid "Getting data from the servers" msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:182 +#: ../../docs/tutorials/optimization/using_servers.rst:192 msgid "Try to **never** request any information from ``VisualServer``, ``PhysicsServer`` or ``Physics2DServer`` by calling functions unless you know what you are doing. These servers will often run asynchronously for performance and calling any function that returns a value will stall them and force them to process anything pending until the function is actually called. This will severely decrease performance if you call them every frame (and it won't be obvious why)." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:188 +#: ../../docs/tutorials/optimization/using_servers.rst:198 msgid "Because of this, most APIs in such servers are designed so it's not even possible to request information back, until it's actual data that can be saved." msgstr "" diff --git a/sphinx/templates/tutorials/physics/index.pot b/sphinx/templates/tutorials/physics/index.pot index 41294f7abe..49db8be22f 100644 --- a/sphinx/templates/tutorials/physics/index.pot +++ b/sphinx/templates/tutorials/physics/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/kinematic_character_2d.pot b/sphinx/templates/tutorials/physics/kinematic_character_2d.pot index f896e6ffd8..1c8f434ff6 100644 --- a/sphinx/templates/tutorials/physics/kinematic_character_2d.pot +++ b/sphinx/templates/tutorials/physics/kinematic_character_2d.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/physics_introduction.pot b/sphinx/templates/tutorials/physics/physics_introduction.pot index d728f5335e..8f9fc5e3fc 100644 --- a/sphinx/templates/tutorials/physics/physics_introduction.pot +++ b/sphinx/templates/tutorials/physics/physics_introduction.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/ragdoll_system.pot b/sphinx/templates/tutorials/physics/ragdoll_system.pot index 3fcfc00d61..ec3812aa7b 100644 --- a/sphinx/templates/tutorials/physics/ragdoll_system.pot +++ b/sphinx/templates/tutorials/physics/ragdoll_system.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/ray-casting.pot b/sphinx/templates/tutorials/physics/ray-casting.pot index 3af976d778..3b7d09a2ef 100644 --- a/sphinx/templates/tutorials/physics/ray-casting.pot +++ b/sphinx/templates/tutorials/physics/ray-casting.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/rigid_body.pot b/sphinx/templates/tutorials/physics/rigid_body.pot index a262bb4693..d15f121bd5 100644 --- a/sphinx/templates/tutorials/physics/rigid_body.pot +++ b/sphinx/templates/tutorials/physics/rigid_body.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/soft_body.pot b/sphinx/templates/tutorials/physics/soft_body.pot index e99f72e4f6..e0d7b28778 100644 --- a/sphinx/templates/tutorials/physics/soft_body.pot +++ b/sphinx/templates/tutorials/physics/soft_body.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/using_area_2d.pot b/sphinx/templates/tutorials/physics/using_area_2d.pot index 832ae041e4..fdb4549885 100644 --- a/sphinx/templates/tutorials/physics/using_area_2d.pot +++ b/sphinx/templates/tutorials/physics/using_area_2d.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/using_kinematic_body_2d.pot b/sphinx/templates/tutorials/physics/using_kinematic_body_2d.pot index dfb225fb8d..de8fe17204 100644 --- a/sphinx/templates/tutorials/physics/using_kinematic_body_2d.pot +++ b/sphinx/templates/tutorials/physics/using_kinematic_body_2d.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/android_in_app_purchases.pot b/sphinx/templates/tutorials/platform/android_in_app_purchases.pot index 43fbb296a3..c3bcada7fe 100644 --- a/sphinx/templates/tutorials/platform/android_in_app_purchases.pot +++ b/sphinx/templates/tutorials/platform/android_in_app_purchases.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/consoles.pot b/sphinx/templates/tutorials/platform/consoles.pot index d630a3f8d3..de11bbd8f7 100644 --- a/sphinx/templates/tutorials/platform/consoles.pot +++ b/sphinx/templates/tutorials/platform/consoles.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/customizing_html5_shell.pot b/sphinx/templates/tutorials/platform/customizing_html5_shell.pot index de07c16e32..97d8422e2a 100644 --- a/sphinx/templates/tutorials/platform/customizing_html5_shell.pot +++ b/sphinx/templates/tutorials/platform/customizing_html5_shell.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -288,19 +288,19 @@ msgid "Promise that resolves once the engine started." msgstr "" #: ../../docs/tutorials/platform/customizing_html5_shell.rst:190 -msgid "Initializes the engine if not yet initialized and starts the game with the main pack loaded from the passed URL." +msgid "Initializes the engine if not yet initialized, loads the executable, and starts the game with the main pack loaded from the passed URL." msgstr "" #: ../../docs/tutorials/platform/customizing_html5_shell.rst:193 -msgid "If the engine isn't loaded yet, the base path of the passed URL will be used to load the engine." +msgid "If the engine isn't loaded yet, the base path of the passed executable name will be used to load the engine." msgstr "" #: ../../docs/tutorials/platform/customizing_html5_shell.rst:196 -msgid "This function ignores overrides of filenames and their extensions to start only the main pack passed as argument." +msgid "Executable's name (URL) to start. Also used as base path to load the engine if not loaded already. Should not contain the file's extension." msgstr "" -#: ../../docs/tutorials/platform/customizing_html5_shell.rst:199 -msgid "Path to the main pack to start. Also used as base path to load the engine if not loaded already." +#: ../../docs/tutorials/platform/customizing_html5_shell.rst:200 +msgid "Path (URL) to the main pack to start." msgstr "" #: ../../docs/tutorials/platform/customizing_html5_shell.rst:203 diff --git a/sphinx/templates/tutorials/platform/index.pot b/sphinx/templates/tutorials/platform/index.pot index cfd79c63d3..83d907cd96 100644 --- a/sphinx/templates/tutorials/platform/index.pot +++ b/sphinx/templates/tutorials/platform/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/services_for_ios.pot b/sphinx/templates/tutorials/platform/services_for_ios.pot index 804eef75bb..1a0af4735e 100644 --- a/sphinx/templates/tutorials/platform/services_for_ios.pot +++ b/sphinx/templates/tutorials/platform/services_for_ios.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/android/android_plugin.pot b/sphinx/templates/tutorials/plugins/android/android_plugin.pot index b194be2b74..b1ca96e495 100644 --- a/sphinx/templates/tutorials/plugins/android/android_plugin.pot +++ b/sphinx/templates/tutorials/plugins/android/android_plugin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: ../../docs/tutorials/plugins/android/android_plugin.rst:4 -msgid "Creating Android plugins" +msgid "Creating Android plugins (Godot 4.0+)" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:7 @@ -25,11 +25,11 @@ msgid "Introduction" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:9 -msgid "Making video games portable is all fine and dandy, until mobile gaming monetization shows up." +msgid "Android plugins are powerful tools to extend the capabilities of the Godot engine by tapping into the functionality provided by the Android platform and ecosystem." msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:12 -msgid "This area is complex, usually a mobile game that monetizes needs special connections to a server for things like:" +msgid "Mobile gaming monetization is one such example since it requires features and capabilities that don't belong to the core feature set of a game engine:" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:15 @@ -97,202 +97,158 @@ msgid "Push notifications" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:32 -msgid "On iOS, you can write a C++ module and take advantage of the C++/ObjC intercommunication. Even using GDNative is possible to make it a plug-in." +msgid "Making modifications to the Android export template is another use-case since using a plugin for that task allows the project to remain compatible with newer Godot versions." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:35 -msgid "On Android, interfacing with C++ through JNI (Java Native Interface) isn't as flexible, so writing plugins is considerably more work." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:38 -msgid "It is also possible that you just want to do modifications to the Android export template, and by using a plugin your project can remain compatible with newer Godot versions (as the android source template will get updated on each release)." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:42 -msgid "Maybe REST" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:44 -msgid "Most of these APIs allow communication via REST/JSON APIs. If the API is relatively simple and does not require complex authentication, this may be a better idea than writing a specific Android plugin." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:47 -msgid "Godot has great support for HTTP, HTTPS and JSON, so an API implemented this way will work on every platform, too." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:50 -msgid "Of course, in most of the cases, it's easier to just write an Android plugin, so keep reading." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:53 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:36 msgid "Android plugin" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:55 -msgid "Writing an Android plugin is now possible, beginning with Godot 3.2. It's also pretty easy! Re-compiling the engine is no longer needed." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:38 +msgid "While introduced in Godot 3.2.0, the Android plugin system got a significant architecture update starting with Godot 3.2.2. In Godot 4.0, the new architecture became the default, rendering plugins for Godot 3.2.0 incompatible with Godot 4.0." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:57 -msgid "Before anything, make sure you understand how to set up a :ref:`custom build environment` for Android." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:41 +msgid "As a prerequisite, make sure you understand how to set up a :ref:`custom build environment` for Android." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:59 -msgid "Your plugin needs to be in a folder other than *\"build/\"* inside the *\"res://android\"* directory (which was created by following the link above). Any name is fine, so name it according to the SDK you will implement (or just your plugin name)." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:43 +msgid "At its core, a Godot Android plugin is a `Android archive library `_ (*aar* archive file) with the following caveats:" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:61 -msgid "Once created, there are certain rules to follow, but they are simple." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:46 +msgid "The library must have a dependency on the Godot engine library (``godot-lib.x.y.aar``). A stable version is made available for each Godot release." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:64 -msgid "Android directories" +#: ../../docs/tutorials/plugins/android/android_plugin.rst:48 +msgid "The library must include a specifically configured ```` tag in its manifest file." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:66 -msgid "Inside your plugin folder, you can use the standard folders as if they were from an Android Gradle project. Examples of this are:" +#: ../../docs/tutorials/plugins/android/android_plugin.rst:51 +msgid "Building a Android plugin" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:77 -msgid "Gradle will treat them as part of the project automatically when building, same as the default project files." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:53 +msgid "**Prerequisite:** `Android Studio `_ is strongly recommended as the IDE to use to create Android plugins. The instructions below assumes that you're using Android Studio." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:80 -msgid "\"Chunk\" files" +#: ../../docs/tutorials/plugins/android/android_plugin.rst:56 +msgid "Follow `these instructions `__ to create an Android library module for your plugin." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:58 +msgid "Add the Godot engine library as a dependency to your plugin module:" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:60 +msgid "Download the Godot engine library (godot-lib.x.y.aar)" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:62 +msgid "Follow `these instructions `__ to add the Godot engine library as a dependency for your plugin." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:65 +msgid "In the plugin module's ``build.gradle`` file, replace ``implementation`` with ``compileOnly`` for the dependency line for the Godot engine library." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:67 +msgid "Create a new class in the plugin module and make sure it extends ``org.godotengine.godot.plugin.GodotPlugin``. At runtime, it will be used to instantiate a singleton object that will be used by the Godot engine to load, initialize and run the plugin." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:70 +msgid "Update the plugin ``AndroidManifest.xml`` file:" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:72 +msgid "Open the plugin ``AndroidManifest.xml`` file." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:74 +msgid "Add the ```` tag if it's missing." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:76 +msgid "In the ```` tag, add a ```` tag setup as follow::" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:82 -msgid "It is now possible to modify *\"AndroidManifest.xml\"* and *build.gradle* in *\"res://android/build\"* directly and Godot will keep your changes when building. The problem, however, is that if you update Godot, you will also need to update the *build/* folder and your changes will be lost." +msgid "Where ``PluginName`` is the name of the plugin, and ``plugin.init.ClassFullName`` is the full name (package + class name) of the plugin loading class." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:86 -msgid "To overcome this, the Godot Android Plugin system lets you create *chunk* files, where you can specify little bits that can be inserted in both *\"AndroidManifest.xml\"* and *build.gradle*. They are inserted every time Godot builds the project for export or deploy." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:84 +msgid "Add the remaining logic for your plugin and run the ``gradlew build`` command to generate the plugin's ``aar`` file. The build will likely generate both a ``debug`` and ``release`` ``aar`` files. Depending on your need, pick only one version (usually the ``release`` one) which to provide your users with." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:90 -msgid "AndroidManifest.conf" +#: ../../docs/tutorials/plugins/android/android_plugin.rst:87 +msgid "**Note:** The plugin's ``aar`` filename must match the following pattern: ``[PluginName]*.aar`` where ``PluginName`` is the name of the plugin in camel case (e.g: ``GodotPayment.release.aar``)." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:92 -msgid "This file allows to insert bits of chunk into *AndroidManifest.xml*, the following are supported tags and are entirely optional:" +#: ../../docs/tutorials/plugins/android/android_plugin.rst:91 +msgid "Loading and using a Android plugin" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:98 -msgid "Any bit of text below this tag is inserted inside the tag of the file. This is often used for permission tags." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:93 +msgid "Once you have access to the plugin ``aar`` file, move it to the Godot project ``res://android/plugins`` directory." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:104 -msgid "Any bit of text below this tag inside the tag of the file. Many SDKs require this." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:95 +msgid "From your script::" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:110 -msgid "These are attributes you can add at the end of the tag. Some SDKs require this." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:101 +msgid "**When exporting the project**, you need to add the plugin's name to the ``Custom Template`` -> ``Plugins`` section. If trying to add multiple plugins, separate their names by a comma (``,``)." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:113 -msgid "gradle.conf" +#: ../../docs/tutorials/plugins/android/android_plugin.rst:105 +msgid "Bundling GDNative resources" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:115 -msgid "This file allows to insert bits of chunk into *build.gradle*, the following are supported and are entirely optional:" +#: ../../docs/tutorials/plugins/android/android_plugin.rst:106 +msgid "A Android plugin can define and provide C/C++ GDNative resources, either to provide and/or access functionality from the game logic. The GDNative resources can be bundled within the plugin ``aar`` file which simplifies the distribution and deployment process:" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:109 +msgid "The shared libraries (``.so``) for the defined GDNative libraries will be automatically bundled by the ``aar`` build system." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:111 +msgid "Godot ``*.gdnlib`` and ``*.gdns`` resource files must be manually defined in the plugin ``assets`` directory. The recommended path for these resources relative to the ``assets`` directory should be: ``godot/plugin/v1/[PluginName]/``." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:114 +msgid "For GDNative libraries, the plugin singleton object must override the ``org.godotengine.godot.plugin.GodotPlugin::getPluginGDNativeLibrariesPaths()`` method, and return the paths to the bundled GDNative libraries config files (``*.gdnlib``). The paths must be relative to the ``assets`` directory. At runtime, the plugin will provide these paths to Godot core which will use them to load and initialize the bundled GDNative libraries." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:119 +msgid "Reference implementations" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:120 +msgid "`Godot Oculus Mobile plugin `_" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:122 -msgid "Any bit of text below this tag is inserted inside the buildscript.repositories section of the build file." +msgid "`Bundled gdnative resources `_" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:130 -msgid "Any bit of text below this tag is inserted inside the buildscript.dependencies section of the build file." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:124 +msgid "`Godot Payment plugin `_" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:137 -msgid "Any bit of text below this tag is inserted inside the allprojects.repositories section of the build file." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:144 -msgid "Any bit of text below this tag is inserted inside the dependencies section of the build file." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:152 -msgid "Any bit of text below this tag is inserted inside the android.defaultconfig section of the build file." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:159 -msgid "Any bit of text below this tag is inserted inside the global scope of the build file." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:162 -msgid "Java singleton" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:164 -msgid "An Android plugin will usually have a singleton class that will load it, this class inherits from ``Godot.SingletonBase``. Resource identifiers for any additional resources you have provided for the module will be in the ``com.godot.game.R`` class, so you'll likely want to import it." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:169 -msgid "A singleton object template follows:" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:239 -msgid "Calling back to Godot" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:241 -msgid "Calling back to Godot from Java is a little more difficult. The instance ID of the script must be known first, this is obtained by calling ``get_instance_ID()`` on the script. This returns an integer that can be passed to Java." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:246 -msgid "From Java, use the ``calldeferred`` function to communicate back with Godot. Java will most likely run in a separate thread, so calls are deferred:" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:254 -msgid "Godot will detect this singleton and initialize it at the proper time." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:257 -msgid "Using it from GDScript" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:259 -msgid "First you will need to add your singleton into the android modules to be loaded. Go to \"Project > Project Settings\". Then on the tab \"General\" go to the \"Android\" section, and fill the Modules part with your module name. The module should include the full Java path. For our example: ``org/godotengine/godot/MySingleton``." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:265 -msgid "Then, from your script:" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:274 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:128 msgid "Troubleshooting" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:277 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:131 msgid "Godot crashes upon load" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:279 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:133 msgid "Check ``adb logcat`` for possible problems, then:" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:281 -msgid "Make sure libgodot_android.so is in the ``libs/armeabi`` folder" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:282 -msgid "Check that the methods used in the Java singleton only use simple Java datatypes, more complex ones are not supported." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:286 -msgid "Future" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:288 -msgid "Godot has an experimental Java API Wrapper that allows to use the entire Java API from GDScript." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:291 -msgid "It's simple to use and it's used like this:" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:297 -msgid "This is most likely not functional yet, if you want to test it and help us make it work, contact us on irc.freenode.org:#godotengine-devel." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:135 +msgid "Check that the methods used in the Java singleton only use simple Java datatypes. More complex datatypes are not supported." msgstr "" diff --git a/sphinx/templates/tutorials/plugins/android/index.pot b/sphinx/templates/tutorials/plugins/android/index.pot index 269f8efd69..7e6b2c10a3 100644 --- a/sphinx/templates/tutorials/plugins/android/index.pot +++ b/sphinx/templates/tutorials/plugins/android/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/import_plugins.pot b/sphinx/templates/tutorials/plugins/editor/import_plugins.pot index 391be01110..1c53f3e69c 100644 --- a/sphinx/templates/tutorials/plugins/editor/import_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/import_plugins.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/index.pot b/sphinx/templates/tutorials/plugins/editor/index.pot index fa468e9d0d..516048247d 100644 --- a/sphinx/templates/tutorials/plugins/editor/index.pot +++ b/sphinx/templates/tutorials/plugins/editor/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot b/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot index fff62b2625..b165090570 100644 --- a/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,23 +24,31 @@ msgstr "" msgid "The inspector dock supports custom plugins to create your own widgets for editing properties. This tutorial explains how to use the :ref:`class_EditorInspectorPlugin` and :ref:`class_EditorProperty` classes to write such plugins with the example of creating a custom value editor." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:13 -msgid "To register these scripts as a new editor plugin, you have to create a ``plugin.cfg`` file as described in :ref:`doc_making_plugins`." +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:12 +msgid "Setup" msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:17 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:14 +msgid "Just like :ref:`doc_making_plugins`, we start out by making a new plugin, getting a ``plugin.cfg`` file created, and start with our :ref:`class_EditorPlugin`. However, instead of using ``add_custom_node`` or ``add_control_to_dock`` we'll use ``add_inspector_plugin``." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:37 msgid "EditorInspectorPlugin" msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:19 -msgid "We start by creating a script extending the :ref:`class_EditorInspectorPlugin` class. This is needed to initialize the plugin and add the custom property editor that we'll later define." +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:39 +msgid "To actually connect into the Inspector, we create a :ref:`class_EditorInspectorPlugin` class. This script provides the \"hooks\" to the inspector. Thanks to this class, the editor will call the functions within the EditorInspectorPlugin while it goes through the process of building the UI for the inspector. The script is used to check if we should enable ourselves for any :ref:`class_Object` that is currently in the inspector (including any :ref:`class_Resource` that is embedded!)." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:51 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:47 +msgid "Once enabled, EditorInspectorPlugin has methods that allow for adding :ref:`class_EditorProperty` nodes or just custom :ref:`class_Control` nodes to the beginning and end of the inspector for that :ref:`class_Object`, or for overriding or changing existing property editors." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:80 msgid "EditorProperty" msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:53 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:82 msgid "Next, we define the actual :ref:`class_EditorProperty` custom value editor that we want instantiated to edit integers. This is a custom :ref:`class_Control` and we can add any kinds of additional nodes to make advanced widgets to embed in the inspector." msgstr "" diff --git a/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot b/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot new file mode 100644 index 0000000000..eb686ff345 --- /dev/null +++ b/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2020, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine latest\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:4 +msgid "Installing plugins" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:6 +msgid "Godot features an editor plugin system with numerous plugins developed by the community. Plugins can extend the editor's functionality with new nodes, additional docks, convenience features, and more." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:11 +msgid "Finding plugins" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:13 +msgid "The preferred way to find Godot plugins is to use the `Asset Library `_. While it can be browsed online, it's more convenient to use it directly from the editor. To do so, click the **AssetLib** tab at the top of the editor:" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:20 +msgid "You can also find assets on code hosting websites such as GitHub." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:24 +msgid "Some repositories describe themselves as \"plugins\" but may not actually be *editor* plugins. This is especially the case for scripts that are intended to be used in a running project. You don't need to enable such plugins to use them. Download them and extract the files in your project folder." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:29 +msgid "One way to distinguish editor plugins from non-editor plugins is to look for a ``plugin.cfg`` file in the repository that hosts the plugin. If the repository contains a ``plugin.cfg`` file in a folder placed in the ``addons/`` folder, then it is an editor plugin." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:35 +msgid "Installing a plugin" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:37 +msgid "To install a plugin, download it as a ZIP archive. On the Asset Library, this can be done using the **Download** button, either from the editor or using the Web interface." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:41 +msgid "On GitHub, if a plugin has *tags* (versions) declared, go to the **Releases** tab to download a stable release. This ensures you download a version that was declared to be stable by its author." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:45 +msgid "On GitHub, if the plugin doesn't have any *tags* declared, use the **Download ZIP** button to download a ZIP of the latest revision:" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:50 +msgid "Extract the ZIP archive and move the ``addons/`` folder it contains into your project folder. If your project already contains an ``addons/`` folder, move the plugin's ``addons/`` folder into your project folder to merge the new folder contents with the existing one. Your file manager may ask you whether to write into the folder; answer **Yes**. No files will be overwritten in the process." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:57 +msgid "Enabling a plugin" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:59 +msgid "To enable the freshly installed plugin, open **Project > Project Settings** at the top of the editor then go the **Plugins** tab. If the plugin was packaged correctly, you should see it in the list of plugins. Click on the gray **Inactive** text and choose **Active** to enable the plugin. The word **Active** will display in green to confirm the plugin was enabled." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:68 +msgid "You can use the plugin immediately after enabling it; there's no need to restart the editor. Likewise, disabling a plugin can be done without having to restart the editor." +msgstr "" + diff --git a/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot b/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot index 218c497abb..184c9d4449 100644 --- a/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -60,103 +60,107 @@ msgstr "" msgid "We also initialize the file targeted by the ``script=`` property of the ``.cfg`` file. In our example, ``main_screen_plugin.gd``." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:68 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:76 msgid "The important part in this script is the ``has_main_screen()`` function, which is overloaded so it returns ``true``. This function is automatically called by the editor on plugin activation, to tell it that this plugin adds a new center view to the editor. For now, we'll leave this script as-is and we'll come back to it later." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:75 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:83 msgid "Scenes" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:77 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:85 msgid "The ``main_screen_plugin.gd`` file will be responsible for each of our plugin's UI element instantiation, and it will also manage the communication between them." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:80 -msgid "As a matter of fact, we wish to design each UI element in their own scene. Different scenes are not aware of each other unless they are both children of a parent scene, yet they will then require ``get_node(\"../brother\")`` accessors. Such practice is more likely to produce errors at runtime, especially if these scenes do not share the same parent node. This is why, they should only be allowed to access their children." +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:88 +msgid "As a matter of fact, we wish to design each UI element in their own scene. Different scenes are not aware of each other unless they are both children of a parent scene, yet they will then require ``get_node(\"../sibling\")`` accessors. Such practice is more likely to produce errors at runtime, especially if these scenes do not share the same parent node. This is why, they should only be allowed to access their children." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:87 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:95 msgid "So, in order to communicate information to another scene, the best design is to define signals. If a user action in a UI scene #1 has to trigger something in another UI scene #2, then this user action has to emit a signal from scene #1, and scene #2 will be connected to that signal. Since all of our UI scenes will be instanced by ``main_screen_plugin.gd`` script, this one script will also connect each of them to the required signals." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:94 -msgid "If the ``main_screen_plugin.gd`` instantiates the UI scenes, won't they be brothers nodes then?" +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:102 +msgid "If the ``main_screen_plugin.gd`` instantiates the UI scenes, won't they be sibling nodes then?" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:97 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:105 msgid "Not necessarily: this script may add all UI scenes as children of the same node of the editor's scene tree - but maybe it won't. And the ``main_screen_plugin.gd`` script will *not* be the parent node of any instantiated scene because it is a script, not a node! This script will only hold references to instantiated scenes." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:104 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:112 msgid "Main screen scene" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:106 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:114 msgid "Create a new scene with a ``Panel`` root node. Select this root node, and in the viewport, click the ``Layout`` menu and select ``Full Rect``. You also need to enable the ``Expand`` vertical size flag in the inspector. The panel now uses all the space available in the viewport. Now, let's add a new script on the root node. Name it ``main_panel.gd``." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:112 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:120 msgid "We then add 2 children to this Panel node: first a ``Button`` node. Place it anywhere on the Panel. Then add a ``Label`` node." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:115 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:123 msgid "Now we need to define a behaviour when this button is pressed. This is covered by the :ref:`Handling a signal ` page, so this part will not be described in details in this tutorial. Select the Button node and click the ``Node`` side dock. Select the ``pressed()`` signal and click the ``Connect`` button (you can also double-click the ``pressed()`` signal instead). In the window that opened, select the Panel node (we will centralize all behaviors in its attached script). Keep the default function name, make sure that the ``Make function`` toggle is ON and hit ``Connect``. This creates an ``_on_Button_pressed()`` function in the ``main_panel.gd`` script, that will be called every time the button is pressed." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:127 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:135 msgid "As the button gets pressed, we want the side-panel's ``Label`` node to show a specific text. As explained above, we cannot directly access the target scene, so we'll emit a signal instead. The ``main_screen_plugin.gd`` script will then connect this signal to the target scene. Let's continue in the ``main_panel.gd`` script:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:143 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:151 msgid "In the same way, this main scene's Label node has to show a value when it receives a specific signal. Let's create a new ``_on_side_button_pressed(text_to_show)`` function for this purpose:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:152 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:160 msgid "We are done for the main screen panel. Save the scene as ``main_panel.tscn``." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:155 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:163 msgid "Tabbed panel scene" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:157 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:165 msgid "The tabbed panel scene is almost identical to the main panel scene. You can either duplicate the ``main_panel.tscn`` file and name the new file ``side_panel.tscn``, or re-create it from a new scene by following the previous section again. However, you will have to create a new script and attach it to the Panel root node. Save it as ``side_panel.gd``. Its content is slightly different, as the signal emitted and the target function have different names. Here is the script's full content:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:179 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:188 msgid "Connecting the two scenes in the plugin script" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:181 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:190 msgid "We now need to update the ``main_screen_plugin.gd`` script so the plugin instances our 2 GUI scenes and places them at the right places in the editor. Here is the full ``main.gd``:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:230 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:249 msgid "A couple of specific lines were added. First, we defined the constants that contain our 2 GUI packed scenes (``MainPanel`` and ``SidePanel``). We will use these resources to instance both scenes." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:234 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:253 msgid "The ``_enter_tree()`` function is called before ``_ready()``. This is where we actually instance the 2 GUI scenes, and add them as children of specific parts of the editor. The side panel case is similar to the example shown in :ref:`doc_making_plugins` page: we add the scene in an editor dock. We specified it will be placed in the left-side dock, upper-left tab." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:240 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:259 msgid "``EditorPlugin`` class does not provide any function to add an element in the main viewport. We thus have to use the ``get_editor_interface().get_editor_viewport()`` to obtain this viewport and add our main panel instance as a child to it. We call the ``make_visible(false)`` function to hide the main panel so it is not directly shown when first activating the plugin." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:247 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:266 msgid "The ``_exit_tree()`` is pretty straightforward. It is automatically called when the plugin is deactivated. It is then important to ``queue_free()`` the elements previously instanced to preserve memory. If you don't, the elements will effectively be invisible in the editor, but they will remain present in the memory. Multiple de-activations/re-activations will then increase memory usage without any way to free it, which is not good." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:254 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:273 msgid "Finally the ``make_visible()`` function is overridden to hide or show the main panel as needed. This function is automatically called by the editor when the user clicks on another main viewport button such as 2D, 3D or Script." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:259 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:278 msgid "Try the plugin" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:261 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:280 msgid "Activate the plugin in the Project Settings. You'll observe a new button next to 2D, 3D, Script above the main viewport. You'll also notice a new tab in the left dock. Try to click the buttons in both side and main panels: events are emitted and caught by the corresponding target scene to change the Label caption inside it." msgstr "" +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:285 +msgid "If you would like to see a more complete example of what main screen plugins are capable of, check out the 2.5D demo projects here: https://github.com/godotengine/godot-demo-projects/tree/master/misc/2.5d" +msgstr "" + diff --git a/sphinx/templates/tutorials/plugins/editor/making_plugins.pot b/sphinx/templates/tutorials/plugins/editor/making_plugins.pot index fbe0b97fe7..80c92eae19 100644 --- a/sphinx/templates/tutorials/plugins/editor/making_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/making_plugins.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/spatial_gizmos.pot b/sphinx/templates/tutorials/plugins/editor/spatial_gizmos.pot index 85e57e3f43..912d8e2fe8 100644 --- a/sphinx/templates/tutorials/plugins/editor/spatial_gizmos.pot +++ b/sphinx/templates/tutorials/plugins/editor/spatial_gizmos.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot b/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot index 4dd0141382..b53f1f2a43 100644 --- a/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/gdnative/gdnative-c-example.pot b/sphinx/templates/tutorials/plugins/gdnative/gdnative-c-example.pot index e499c6c23c..c334d92d54 100644 --- a/sphinx/templates/tutorials/plugins/gdnative/gdnative-c-example.pot +++ b/sphinx/templates/tutorials/plugins/gdnative/gdnative-c-example.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -104,255 +104,251 @@ msgstr "" msgid "Let's start by writing our main code. Eventually, we want to end up with a file structure that looks along those lines:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:127 -msgid "Open up Godot and create a new project called \"simple\" alongside your ``godot_headers`` Git clone. This will create the ``simple`` folder and ``project.godot`` file. Then manually create ``bin`` and ``src`` subfolders in this folder." +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:126 +msgid "Open up Godot and create a new project called \"simple\" alongside your ``godot_headers`` Git clone. This will create the ``simple`` folder and ``project.godot`` file. Then manually create a ``src`` folder alongside the ``simple`` folder, and a ``bin`` subfolder in the ``simple`` folder." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:132 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:131 msgid "We're going to start by having a look at what our ``simple.c`` file contains. Now, for our example here we're making a single C source file without a header to keep things simple. Once you start writing bigger projects it is advisable to break your project up into multiple files. That however falls outside of the scope of this tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:138 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:137 msgid "We'll be looking at the source code bit by bit so all the parts below should all be put together into one big file. Each section will be explained as we add it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:150 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:149 msgid "The above code includes the GDNative API struct header and a standard header that we will use further down for string operations. It then defines two pointers to two different structs. GDNative supports a large collection of functions for calling back into the main Godot executable. In order for your module to have access to these functions, GDNative provides your application with a struct containing pointers to all these functions." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:157 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:156 msgid "To keep this implementation modular and easily extendable, the core functions are available directly through the \"core\" API struct, but additional functions have their own \"GDNative structs\" that are accessible through extensions." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:161 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:160 msgid "In our example, we access one of these extension to gain access to the functions specifically needed for NativeScript." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:164 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:163 msgid "A NativeScript behaves like any other script in Godot. Because the NativeScript API is rather low level, it requires the library to specify many things more verbosely than other scripting systems, such as GDScript. When a NativeScript instance gets created, a library-given constructor gets called. When that instance gets destroyed, the given destructor will be executed." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:177 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:176 msgid "These are forward declarations for the functions we'll be implementing for our object. A constructor and destructor is needed. Additionally, the object will have a single method called ``get_data``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:181 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:180 msgid "Next up is the first of the entry points Godot will call when our dynamic library is loaded. These methods are all prefixed with ``godot_`` (you can change this later on) followed by their name. ``gdnative_init`` is a function that initializes our dynamic library. Godot will give it a pointer to a structure that contains various bits of information we may find useful among which the pointers to our API structures." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:188 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:187 msgid "For any additional API structures we need to loop through our extensions array and check the type of extension." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:207 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:206 msgid "Next up is ``gdnative_terminate`` which is called before the library is unloaded. Godot will unload the library when no object uses it anymore. Here, you can do any cleanup you may need to do. For our example, we're simply going to clear our API pointers." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:219 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:218 msgid "Finally we have ``nativescript_init`` which is the most important function we'll need today. This function will be called by Godot as part of loading a GDNative library and communicates back to the engine what objects we make available." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:244 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:243 msgid "We first tell the engine which classes are implemented by calling ``nativescript_register_class``. The first parameter here is the handle pointer given to us. The second is the name of our object class. The third is the type of object in Godot that we 'inherit' from; this is not true inheritance but it's close enough. Finally, our fourth and fifth parameters are descriptions for our constructor and destructor." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:251 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:250 msgid "We then tell Godot about our methods (well our one method in this case), by calling ``nativescript_register_method`` for each method of our class. In our case, that is just ``get_data``. Our first parameter is yet again our handle pointer. The second is again the name of the object class we're registering. The third is the name of our function as it will be known to GDScript. The fourth is our attributes setting (see ``godot_method_rpc_mode`` enum in ``godot_headers/nativescript/godot_nativescript.h`` for possible values). The fifth and final parameter is a description of which function to call when the method gets called." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:261 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:260 msgid "The description struct ``instance_method`` contains the function pointer to the function itself as first field. The other two fields in these structs are for specifying per-method userdata. The second is the ``method_data`` field which is passed on every function call as the ``p_method_data`` argument. This is useful to reuse one function for different methods on possibly multiple different script-classes. If the ``method_data`` value is a pointer to memory that needs to be freed, the third ``free_func`` field can contain a pointer to a function that will free that memory. That free function gets called when the script itself (not instance!) gets unloaded (so usually at library-unload time)." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:271 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:270 msgid "Now, it's time to start working on the functions of our object. First, we define a structure that we use to store the member data of an instance of our GDNative class." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:281 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:280 msgid "And then, we define our constructor. All we do in our constructor is allocate memory for our structure and fill it with some data. Note that we use Godot's memory functions so the memory gets tracked and then return the pointer to our new structure. This pointer will act as our instance identifier in case multiple objects are instantiated." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:287 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:286 msgid "This pointer will be passed to any of our functions related to our object as a parameter called ``p_user_data``, and can both be used to identify our instance and to access its member data." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:300 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:299 msgid "Our destructor is called when Godot is done with our object and we free our instances' member data." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:309 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:308 msgid "And finally, we implement our ``get_data`` function. Data is always sent and returned as variants so in order to return our data, which is a string, we first need to convert our C string to a Godot string object, and then copy that string object into the variant we are returning." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:330 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:329 msgid "Strings are heap-allocated in Godot, so they have a destructor which frees the memory. Destructors are named ``godot_TYPENAME_destroy``. When a Variant gets created with a String, it references the String. That means that the original String can be \"destroyed\" to decrease the ref-count. If that does not happen the String memory will leak since the ref-count will never be zero and the memory never deallocated. The returned variant gets automatically destroyed by Godot." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:339 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:338 msgid "In more complex operations it can be confusing the keep track of which value needs to be deallocated and which does not. As a general rule: call ``godot_TYPENAME_destroy`` when a C++ destructor would be called instead. The String destructor would be called in C++ after the Variant was created, so the same is necessary in C." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:345 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:344 msgid "The variant we return is destroyed automatically by Godot." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:347 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:346 msgid "And that is the whole source code of our module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:350 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:349 msgid "Compiling" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:352 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:351 msgid "We now need to compile our source code. As mentioned our example project on GitHub contains a SCons configuration that does all the hard work for you, but for our tutorial here we are going to call the compilers directly." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:356 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:355 msgid "Assuming you are sticking to the folder structure suggested above, it is best to open a terminal session in the ``src`` folder and execute the commands from there. Make sure to create the ``bin`` folder before you proceed." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:360 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:359 msgid "On Linux:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:367 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:366 msgid "On macOS:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:374 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:373 msgid "On Windows:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:383 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:382 msgid "On the Windows build you also end up with a ``libsimple.lib`` library. This is a library that you can compile into a project to provide access to the DLL. We get it as a byproduct and we do not need it :) When exporting your game for release this file will be ignored." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:390 -msgid "If you add a blank ``.gdignore`` file to the ``src`` folder, Godot will not try to import the compiler-generated files. This is necessary on Windows were compiled objects have the ``.obj`` extension, which is also a 3D model format supported by the engine." -msgstr "" - -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:396 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:388 msgid "Creating the GDNativeLibrary (``.gdnlib``) file" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:398 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:390 msgid "With our module compiled, we now need to create a corresponding :ref:`GDNativeLibrary ` resource with ``.gdnlib`` extension which we place alongside our dynamic libraries. This file tells Godot what dynamic libraries are part of our module and need to be loaded per platform." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:404 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:396 msgid "We can use Godot to generate this file, so open the \"simple\" project in the editor." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:407 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:399 msgid "Start by clicking the create resource button in the Inspector:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:411 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:403 msgid "And select ``GDNativeLibrary``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:415 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:407 msgid "You should see a contextual editor appear in the bottom panel. Use the \"Expand Bottom Panel\" button in the bottom right to expand it to full height:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:421 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:413 msgid "General properties" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:423 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:415 msgid "In the Inspector, you have various properties to control loading the library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:425 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:417 msgid "If *Load Once* is enabled, our library is loaded only once and each individual script that uses our library will use the same data. Any variable you define globally will be accessible from any instance of your object you create. If *Load Once* is disabled, a new copy of the library is loaded into memory each time a script accesses the library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:431 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:423 msgid "If *Singleton* is enabled, our library is automatically loaded and a function called ``godot_gdnative_singleton`` is called. We'll leave that for another tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:435 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:427 msgid "The *Symbol Prefix* is a prefix for our core functions, such as ``godot_`` in ``godot_nativescript_init`` seen earlier. If you use multiple GDNative libraries that you wish to statically link, you will have to use different prefixes. This again is a subject to dive into deeper in a separate tutorial, it is only needed at this time for deployment to iOS as this platform does not like dynamic libraries." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:442 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:434 msgid "*Reloadable* defines whether the library should be reloaded when the editor loses and gains focus, typically to pick up new or modified symbols from any change made to the library externally." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:447 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:439 msgid "Platform libraries" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:449 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:441 msgid "The GDNativeLibrary editor plugin lets you configure two things for each platform and architecture that you aim to support." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:452 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:444 msgid "The *Dynamic Library* column (``entry`` section in the saved file) tells us for each platform and feature combination which dynamic library has to be loaded. This also informs the exporter which files need to be exported when exporting to a specific platform." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:457 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:449 msgid "The *Dependencies* column (also ``dependencies`` section) tells Godot what other files need to be exported for each platform in order for our library to work. Say that your GDNative module uses another DLL to implement functionality from a 3rd party library, this is where you list that DLL." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:462 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:454 msgid "For our example, we only built libraries for Linux, macOS and/or Windows, so you can link them in the relevant fields by clicking the folder button. If you built all three libraries, you should have something like this:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:469 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:461 msgid "Saving the resource" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:471 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:463 msgid "We can then save our GDNativeLibrary resource as ``bin/libsimple.gdnlib`` with the Save button in the Inspector:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:476 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:468 msgid "The file is saved in a text-based format and should have contents similar to this:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:503 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:495 msgid "Creating the NativeScript (``.gdns``) file" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:505 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:497 msgid "With our ``.gdnlib`` file we've told Godot how to load our library, now we need to tell it about our \"Simple\" object class. We do this by creating a :ref:`NativeScript ` resource file with ``.gdns`` extension." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:509 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:501 msgid "Like done for the GDNativeLibrary resource, click the button to create a new resource in the Inspector and select ``NativeScript``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:514 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:506 msgid "The inspector will show a few properties that we need to fill. As *Class Name* we enter \"Simple\" which is the object class name that we declared in our C source when calling ``godot_nativescript_register_class``. We also need to select our ``.gdnlib`` file by clicking on *Library* and selecting *Load*:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:521 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:513 msgid "Finally click on the save icon and save this as ``bin/simple.gdns``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:525 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:517 msgid "Now it's time to build our scene. Add a Control node to your scene as your root and call it ``main``. Then add a Button and a Label as child nodes. Place them somewhere nice on screen and give your button a name." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:531 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:523 msgid "Select the control node and attach a script to it:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:535 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:527 msgid "Next link up the ``pressed`` signal on the button to your script:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:539 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:531 msgid "Don't forget to save your scene, call it ``main.tscn``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:541 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:533 msgid "Now we can implement our ``main.gd`` code:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:553 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:545 msgid "After all that, our project should work. The first time you run it Godot will ask you what your main scene is and you select your ``main.tscn`` file and presto:" msgstr "" diff --git a/sphinx/templates/tutorials/plugins/gdnative/gdnative-cpp-example.pot b/sphinx/templates/tutorials/plugins/gdnative/gdnative-cpp-example.pot index 1505fd9786..cef18318a0 100644 --- a/sphinx/templates/tutorials/plugins/gdnative/gdnative-cpp-example.pot +++ b/sphinx/templates/tutorials/plugins/gdnative/gdnative-cpp-example.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -120,311 +120,315 @@ msgstr "" msgid "To generate and compile the bindings, use this command (replacing ```` with ``windows``, ``linux`` or ``osx`` depending on your OS):" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:140 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:134 +msgid "To speed up compilation, add `-jN` at the end of the SCons command line where `N` is the number of CPU threads you have on your system. The example below uses 4 threads." +msgstr "" + +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:142 msgid "This step will take a while. When it is completed, you should have static libraries that can be compiled into your project stored in ``godot-cpp/bin/``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:143 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:145 msgid "At some point in the future, compiled binaries will be available, making this step optional." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:148 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:150 msgid "You may need to add ``bits=64`` to the command on Windows or Linux. We're still working on better auto detection." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:152 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:154 msgid "Creating a simple plugin" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:154 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:156 msgid "Now it's time to build an actual plugin. We'll start by creating an empty Godot project in which we'll place a few files." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:157 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:159 msgid "Open Godot and create a new project. For this example, we will place it in a folder called ``demo`` inside our GDNative module's folder structure." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:160 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:162 msgid "In our demo project, we'll create a scene containing a Node called \"Main\" and we'll save it as ``main.tscn``. We'll come back to that later." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:163 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:165 msgid "Back in the top-level GDNative module folder, we're also going to create a subfolder called ``src`` in which we'll place our source files." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:166 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:168 msgid "You should now have ``demo``, ``godot-cpp``, ``godot_headers``, and ``src`` directories in your GDNative module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:169 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:171 msgid "In the ``src`` folder, we'll start with creating our header file for the GDNative node we'll be creating. We will name it ``gdexample.h``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:233 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:235 msgid "There are a few things of note to the above. We're including ``Godot.hpp`` which contains all our basic definitions. After that, we include ``Sprite.hpp`` which contains bindings to the Sprite class. We'll be extending this class in our module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:238 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:240 msgid "We're using the namespace ``godot``, since everything in GDNative is defined within this namespace." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:241 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:243 msgid "Then we have our class definition, which inherits from our Sprite through a container class. We'll see a few side effects of this later on. The ``GODOT_CLASS`` macro sets up a few internal things for us." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:245 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:247 msgid "After that, we declare a single member variable called ``time_passed``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:247 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:249 msgid "In the next block we're defining our methods, we obviously have our constructor and destructor defined, but there are two other functions that will likely look familiar to some, and one new method." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:251 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:253 msgid "The first is ``_register_methods``, which is a static function that Godot will call to find out which methods can be called on our NativeScript and which properties it exposes. The second is our ``_process`` function, which will work exactly the same as the ``_process`` function you're used to in GDScript. The third is our ``_init`` function which is called after Godot has properly set up our object. It has to exist even if you don't place any code in it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:258 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:260 msgid "Let's implement our functions by creating our ``gdexample.cpp`` file:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:318 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:320 msgid "This one should be straightforward. We're implementing each method of our class that we defined in our header file. Note that the ``register_method`` call **must** expose the ``_process`` method, otherwise Godot will not be able to use it. However, we do not have to tell Godot about our constructor, destructor and ``_init`` functions." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:324 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:326 msgid "The other method of note is our ``_process`` function, which simply keeps track of how much time has passed and calculates a new position for our sprite using a simple sine and cosine function. What stands out is calling ``owner->set_position`` to call one of the build in methods of our Sprite. This is because our class is a container class; ``owner`` points to the actual Sprite node our script relates to. In the upcoming NativeScript 1.1, ``set_position`` can be called directly on our class." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:332 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:334 msgid "There is one more C++ file we need; we'll name it ``gdlibrary.cpp``. Our GDNative plugin can contain multiple NativeScripts, each with their own header and source file like we've implemented ``GDExample`` up above. What we need now is a small bit of code that tells Godot about all the NativeScripts in our GDNative plugin." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:356 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:358 msgid "Note that we are not using the ``godot`` namespace here, since the three functions implemented here need to be defined without a namespace." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:359 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:361 msgid "The ``godot_gdnative_init`` and ``godot_gdnative_terminate`` functions get called respectively when Godot loads our plugin and when it unloads it. All we're doing here is parse through the functions in our bindings module to initialize them, but you might have to set up more things depending on your needs." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:365 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:367 msgid "The important function is the third function called ``godot_nativescript_init``. We first call a function in our bindings library that does its usual stuff. After that, we call the function ``register_class`` for each of our classes in our library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:371 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:373 msgid "Compiling the plugin" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:373 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:375 msgid "We cannot easily write by hand a ``SConstruct`` file that SCons would use for building. For the purpose of this example, just use :download:`this hardcoded SConstruct file ` we've prepared. We'll cover a more customizable, detailed example on how to use these build files in a subsequent tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:381 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:383 msgid "This ``SConstruct`` file was written to be used with the latest ``godot-cpp`` master, you may need to make small changes using it with older versions or refer to the ``SConstruct`` file in the Godot 3.0 documentation." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:385 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:387 msgid "Once you've downloaded the ``SConstruct`` file, place it in your GDNative module folder besides ``godot-cpp``, ``godot_headers`` and ``demo``, then run:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:392 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:394 msgid "You should now be able to find the module in ``demo/bin/``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:396 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:398 msgid "Here, we've compiled both godot-cpp and our gdexample library as debug builds. For optimized builds, you should compile them using the ``target=release`` switch." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:401 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:403 msgid "Using the GDNative module" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:403 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:405 msgid "Before we jump back into Godot, we need to create two more files in ``demo/bin/``. Both can be created using the Godot editor, but it may be faster to create them directly." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:407 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:409 msgid "The first one is a file that lets Godot know what dynamic libraries should be loaded for each platform and is called ``gdexample.gdnlib``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:431 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:433 msgid "This file contains a ``general`` section that controls how the module is loaded. It also contains a prefix section which should be left on ``godot_`` for now. If you change this, you'll need to rename various functions that are used as entry points. This was added for the iPhone platform because it doesn't allow dynamic libraries to be deployed, yet GDNative modules are linked statically." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:437 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:439 msgid "The ``entry`` section is the important bit: it tells Godot the location of the dynamic library in the project's filesystem for each supported platform. It will also result in *just* that file being exported when you export the project, which means the data pack won't contain libraries that are incompatible with the target platform." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:443 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:445 msgid "Finally, the ``dependencies`` section allows you to name additional dynamic libraries that should be included as well. This is important when your GDNative plugin implements someone else's library and requires you to supply a third-party dynamic library with your project." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:448 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:450 msgid "If you double click on the ``gdexample.gdnlib`` file within Godot, you'll see there are far more options to set:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:453 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:455 msgid "The second file we need to create is a file used by each NativeScript we've added to our plugin. We'll name it ``gdexample.gdns`` for our gdexample NativeScript." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:469 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:471 msgid "This is a standard Godot resource; you could just create it directly in your scene, but saving it to a file makes it much easier to reuse it in other places. This resource points to our gdnlib file, so that Godot can know which dynamic library contains our NativeScript. It also defines the ``class_name`` which identifies the NativeScript in our plugin we want to use." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:475 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:477 msgid "Time to jump back into Godot. We load up the main scene we created way back in the beginning and now add a Sprite to our scene:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:480 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:482 msgid "We're going to assign the Godot logo to this sprite as our texture, disable the ``centered`` property and drag our ``gdexample.gdns`` file onto the ``script`` property of the sprite:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:486 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:488 msgid "We're finally ready to run the project:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:491 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:493 msgid "Adding properties" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:493 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:495 msgid "GDScript allows you to add properties to your script using the ``export`` keyword. In GDNative you have to register the properties and there are two ways of doing this. You can either bind directly to a member or use a setter and getter function." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:500 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:502 msgid "There is a third option, just like in GDScript you can directly implement the ``_get_property_list``, ``_get`` and ``_set`` methods of an object but that goes far beyond the scope of this tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:504 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:506 msgid "We'll examine both starting with the direct bind. Lets add a property that allows us to control the amplitude of our wave." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:507 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:509 msgid "In our ``gdexample.h`` file we simply need to add a member variable like so:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:517 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:519 msgid "In our ``gdexample.cpp`` file we need to make a number of changes, we will only show the methods we end up changing, don't remove the lines we're omitting:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:569 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:571 msgid "Once you compile the module with these changes in place you will see that a property has been added to our interface. You can now change this property and when you run your project, you will see that our Godot icon travels along a larger figure." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:576 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:578 msgid "The ``reloadable`` property in the ``gdexample.gdnlib`` file must be set to ``true`` for the Godot editor to automatically pick up the newly added property." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:580 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:582 msgid "However, this setting should be used with care especially when tool classes are used, as the editor might hold objects then that have script instances attached to them that are managed by a GDNative library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:584 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:586 msgid "Lets do the same but for the speed of our animation and use a setter and getter function. Our ``gdexample.h`` header file again only needs a few more lines of code:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:599 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:601 msgid "This requires a few more changes to our ``gdexample.cpp`` file, again we're only showing the methods that have changed so don't remove anything we're omitting:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:671 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:673 msgid "Now when the project is compiled we'll see another property called speed. Changing its value will make the animation go faster or slower." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:674 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:676 msgid "For this example there is no obvious advantage of using a setter and getter. It is just more code to write. For a simple example as this there may be a good reason for a setter if you want to react on the variable being changed but in many cases just binding the variable will be enough." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:679 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:681 msgid "Getters and setters become far more useful in more complex scenarios where you need to make additional choices based on the state of your object." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:684 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:686 msgid "For simplicity we've left out the optional parameters in the register_property method call. These parameters are ``rpc_mode``, ``usage``, ``hint`` and ``hint_string``. These can be used to further configure how properties are displayed and set on the Godot side." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:689 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:691 msgid "Modern C++ compilers are able to infer the class and variable type and allow you to omit the ```` part of our ``register_property`` method. We've had mixed experiences with this however." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:694 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:696 msgid "Signals" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:696 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:698 msgid "Last but not least, signals fully work in GDNative as well. Having your module react to a signal given out by another object requires you to call ``connect`` on that object. We can't think of a good example for our wobbling Godot icon, we would need to showcase a far more complete example." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:701 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:703 msgid "This however is the required syntax:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:712 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:714 msgid "Note that you can only call ``my_method`` if you've previously registered it in your ``_register_methods`` method." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:715 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:717 msgid "Having your object sending out signals is far more common. For our wobbling Godot icon we'll do something silly just to show how it works. We're going to emit a signal every time a second has passed and pass the new location along." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:719 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:721 msgid "In our ``gdexample.h`` header file we just need to define a new member ``time_emit``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:730 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:732 msgid "The changes in ``gdexample.cpp`` are a bit more elaborate this time. First you'll need to set ``time_emit = 0.0;`` in either our ``_init`` method or in our constructor. But the other two needed changes we'll look at one by one." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:734 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:736 msgid "In our ``_register_methods`` method we need to declare our signal and we do this as follows:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:761 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:763 msgid "Here we see a nice improvement in the latest version of godot-cpp where our ``register_signal`` method can be a single call first taking the signals name, then having pairs of values specifying the parameter name and type of each parameter we'll send along with this signal." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:766 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:768 msgid "For NativeScript 1.0 we first build a dictionary in which we tell Godot about the types of arguments we will pass to our signal, and then register it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:769 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:771 msgid "Next we'll need to change our ``_process`` method:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:815 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:817 msgid "After a second has passed we emit our signal and reset our counter. Again in the new version of godot-cpp we can add our parameter values directly to ``emit_signal``. In NativeScript 1.0 We first build an array of values and then call ``emit_signal``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:820 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:822 msgid "Once compiled we can go into Godot and select our sprite node. On our ``Node`` tab we find our new signal and link it up by pressing connect. We've added a script on our main node and implemented our signal like this:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:831 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:833 msgid "Every second we simply output our position to the console." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:834 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:836 msgid "NativeScript 1.1 vs NativeScript 1.0" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:836 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:838 msgid "So far in our example above there doesn't seem to be a lot of difference between the old and new syntax. The class is defined slightly differently and we no longer use the ``owner`` member to call methods on the Godot side of our object. A lot of the improvements are hidden under the hood." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:841 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:843 msgid "This example only deals with simple variables and simple methods. Especially once you start passing references to other objects or when you start calling methods that require more complex parameters, NativeScript 1.1 does start to show its benefits." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:847 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:849 msgid "Next steps" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:849 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:851 msgid "The above is only a simple example, but we hope it shows you the basics. You can build upon this example to create full-fledged scripts to control nodes in Godot using C++." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:853 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:855 msgid "You should be able to edit and recompile the plugin while the Godot editor remains open; just rerun the project after the library has finished building." msgstr "" diff --git a/sphinx/templates/tutorials/plugins/gdnative/index.pot b/sphinx/templates/tutorials/plugins/gdnative/index.pot index 256e9fa2e2..7427700dbe 100644 --- a/sphinx/templates/tutorials/plugins/gdnative/index.pot +++ b/sphinx/templates/tutorials/plugins/gdnative/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/index.pot b/sphinx/templates/tutorials/plugins/index.pot index 086445995e..83a053615e 100644 --- a/sphinx/templates/tutorials/plugins/index.pot +++ b/sphinx/templates/tutorials/plugins/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/advanced_postprocessing.pot b/sphinx/templates/tutorials/shading/advanced_postprocessing.pot index e7eb2577c3..b1d9661103 100644 --- a/sphinx/templates/tutorials/shading/advanced_postprocessing.pot +++ b/sphinx/templates/tutorials/shading/advanced_postprocessing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/index.pot b/sphinx/templates/tutorials/shading/index.pot index 9ce0f620cb..c87f6b1ad0 100644 --- a/sphinx/templates/tutorials/shading/index.pot +++ b/sphinx/templates/tutorials/shading/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/intro_to_shaders_water_workshop.pot b/sphinx/templates/tutorials/shading/intro_to_shaders_water_workshop.pot index 4edf3fd8a4..85d89edd39 100644 --- a/sphinx/templates/tutorials/shading/intro_to_shaders_water_workshop.pot +++ b/sphinx/templates/tutorials/shading/intro_to_shaders_water_workshop.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/migrating_to_godot_shader_language.pot b/sphinx/templates/tutorials/shading/migrating_to_godot_shader_language.pot index de4c75eda8..a76dd7d556 100644 --- a/sphinx/templates/tutorials/shading/migrating_to_godot_shader_language.pot +++ b/sphinx/templates/tutorials/shading/migrating_to_godot_shader_language.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/screen-reading_shaders.pot b/sphinx/templates/tutorials/shading/screen-reading_shaders.pot index c74f0f48d2..747704a247 100644 --- a/sphinx/templates/tutorials/shading/screen-reading_shaders.pot +++ b/sphinx/templates/tutorials/shading/screen-reading_shaders.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shader_materials.pot b/sphinx/templates/tutorials/shading/shader_materials.pot index 9e37815695..db75f9fb32 100644 --- a/sphinx/templates/tutorials/shading/shader_materials.pot +++ b/sphinx/templates/tutorials/shading/shader_materials.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/canvas_item_shader.pot b/sphinx/templates/tutorials/shading/shading_reference/canvas_item_shader.pot index f876160f3f..c024b27e52 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/canvas_item_shader.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/canvas_item_shader.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/index.pot b/sphinx/templates/tutorials/shading/shading_reference/index.pot index 1d31cd6df3..0aed9eb5c6 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/index.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/particle_shader.pot b/sphinx/templates/tutorials/shading/shading_reference/particle_shader.pot index e7ba6c8f21..434932ec49 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/particle_shader.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/particle_shader.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/shaders.pot b/sphinx/templates/tutorials/shading/shading_reference/shaders.pot index d04b15a8ac..1d566d09a4 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/shaders.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/shaders.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/shading_language.pot b/sphinx/templates/tutorials/shading/shading_reference/shading_language.pot index 16fc044ad0..7726b93a0e 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/shading_language.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/shading_language.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,14 +41,14 @@ msgid "Most GLSL ES 3.0 datatypes are supported:" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:21 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:513 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 msgid "Type" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:21 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:467 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:513 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 msgid "Description" msgstr "" @@ -61,8 +61,8 @@ msgid "Void datatype, useful only for functions that return nothing." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:25 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:538 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:538 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:610 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:610 msgid "**bool**" msgstr "" @@ -95,8 +95,8 @@ msgid "Four-component vector of booleans." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:33 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:540 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:540 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:612 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:612 msgid "**int**" msgstr "" @@ -161,8 +161,8 @@ msgid "Four-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:49 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:542 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:542 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:614 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:614 msgid "**float**" msgstr "" @@ -171,7 +171,7 @@ msgid "Floating point scalar." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:51 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:544 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:616 msgid "**vec2**" msgstr "" @@ -180,7 +180,7 @@ msgid "Two-component vector of floating point values." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:53 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:546 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:618 msgid "**vec3**" msgstr "" @@ -189,8 +189,8 @@ msgid "Three-component vector of floating point values." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:55 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:515 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:620 msgid "**vec4**" msgstr "" @@ -215,8 +215,8 @@ msgid "3x3 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:61 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:552 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:622 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:624 msgid "**mat4**" msgstr "" @@ -225,12 +225,12 @@ msgid "4x4 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:63 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:519 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:521 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 msgid "**sampler2D**" msgstr "" @@ -362,1248 +362,1272 @@ msgstr "" msgid "It is possible to obtain any combination of components in any order, as long as the result is another vector type (or scalar). This is easier shown than explained:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:170 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:174 msgid "Precision" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:172 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:176 msgid "It is possible to add precision modifiers to datatypes; use them for uniforms, variables, arguments and varyings:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:181 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:185 msgid "Using lower precision for some operations can speed up the math involved (at the cost of less precision). This is rarely needed in the vertex processor function (where full precision is needed most of the time), but is often useful in the fragment processor." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:185 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:189 msgid "Keep in mind that some architectures (mainly mobile) benefit a lot from this, but are also restricted (conversion between precisions has a cost). Please read the relevant documentation on the target architecture to find out more. In all honesty though, mobile drivers are buggy, so, to stay out of trouble, make simple shaders without specifying precision unless you *really* need to." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:191 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:195 msgid "Arrays" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:193 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:197 msgid "Arrays are containers for multiple variables of a similar type. Note: As of Godot 3.2, only local and varying arrays have been implemented." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:197 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:201 msgid "Local arrays" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:199 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:203 msgid "Local arrays are declared in functions. They can use all of the allowed datatypes, except samplers. The array declaration follows a C-style syntax: ``typename + identifier + [array size]``." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:208 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:212 msgid "They can be initialized at the beginning like:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:220 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:224 msgid "You can declare multiple arrays (even with different sizes) in one expression:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:230 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:234 msgid "To access an array element, use the indexing syntax:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:240 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:244 msgid "Arrays also have a built-in function ``.length()`` (not to be confused with the built-in ``length()`` function). It doesn't accept any parameters and will return the array's size." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:249 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:253 msgid "Note: If you use an index below 0 or greater than array size - the shader will crash and break rendering. To prevent this, use ``length()``, ``if``, or ``clamp()`` functions to ensure the index is between 0 and the array's length. Always carefully test and check your code. If you pass a constant expression or a simple number, the editor will check its bounds to prevent this crash." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:252 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:256 msgid "Constants" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:254 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:258 msgid "Use the ``const`` keyword before the variable declaration to make that variable immutable, which means that it cannot be modified. All basic types, except samplers can be declared as constants. Accessing and using a constant value is slightly faster than using a uniform. Constants must be initialized at their declaration." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:264 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:268 msgid "Constants cannot be modified and additionally cannot have hints, but multiple of them (if they have the same type) can be declared in a single expression e.g" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:270 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:274 msgid "Similar to variables, arrays can also be declared with ``const``." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:280 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:284 msgid "Constants can be declared both globally (outside of any function) or locally (inside a function). Global constants are useful when you want to have access to a value throughout your shader that does not need to be modified. Like uniforms, global constants are shared between all shader stages, but they are not accessible outside of the shader." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:290 -msgid "Operators" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:292 -msgid "Godot shading language supports the same set of operators as GLSL ES 3.0. Below is the list of them in precedence order:" -msgstr "" - #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:295 -msgid "Precedence" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:295 -msgid "Class" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:295 -msgid "Operator" +msgid "Structs" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:297 -msgid "1 (highest)" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:297 -msgid "parenthetical grouping" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:297 -msgid "**()**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:299 -msgid "2" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:299 -msgid "unary" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:299 -msgid "**+, -, !, ~**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:301 -msgid "3" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:301 -msgid "multiplicative" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:301 -msgid "**/, \\*, %**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:303 -msgid "4" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:303 -msgid "additive" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:303 -msgid "**+, -**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:305 -msgid "5" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:305 -msgid "bit-wise shift" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:305 -msgid "**<<, >>**" +msgid "Structs are compound types which can be used for better abstaction of shader code. You can declare them at the global scope like:" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:307 -msgid "6" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:307 -msgid "relational" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:307 -msgid "**<, >, <=, >=**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:309 -msgid "7" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:309 -msgid "equality" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:309 -msgid "**==, !=**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:311 -msgid "8" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:311 -msgid "bit-wise and" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:311 -msgid "**&**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:313 -msgid "9" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:313 -msgid "bit-wise exclusive or" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:313 -msgid "**^**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:315 -msgid "10" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:315 -msgid "bit-wise inclusive or" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:315 -msgid "**|**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:317 -msgid "11" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:317 -msgid "logical and" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:317 -msgid "**&&**" +msgid "After declaration, you can instantiate and initialize them like:" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:319 -msgid "12 (lowest)" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:319 -msgid "logical inclusive or" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:319 -msgid "**||**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:323 -msgid "Flow control" +msgid "Or use struct constructor for same purpose:" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:325 -msgid "Godot Shading language supports the most common types of flow control:" +msgid "Structs may contain other struct or array, you can also instance them as global constant:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:365 -msgid "Keep in mind that, in modern GPUs, an infinite loop can exist and can freeze your application (including editor). Godot can't protect you from this, so be careful not to make this mistake!" +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:344 +msgid "You can also pass them to functions:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:362 +msgid "Operators" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:364 +msgid "Godot shading language supports the same set of operators as GLSL ES 3.0. Below is the list of them in precedence order:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:367 +msgid "Precedence" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:367 +msgid "Class" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:367 +msgid "Operator" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:369 -msgid "Discarding" +msgid "1 (highest)" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:369 +msgid "parenthetical grouping" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:369 +msgid "**()**" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:371 -msgid "Fragment and light functions can use the **discard** keyword. If used, the fragment is discarded and nothing is written." +msgid "2" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:374 -msgid "Functions" +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:371 +msgid "unary" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:376 -msgid "It is possible to define functions in a Godot shader. They use the following syntax:" +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:371 +msgid "**+, -, !, ~**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:373 +msgid "3" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:373 +msgid "multiplicative" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:373 +msgid "**/, \\*, %**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:375 +msgid "4" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:375 +msgid "additive" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:375 +msgid "**+, -**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:377 +msgid "5" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:377 +msgid "bit-wise shift" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:377 +msgid "**<<, >>**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:379 +msgid "6" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:379 +msgid "relational" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:379 +msgid "**<, >, <=, >=**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:381 +msgid "7" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:381 +msgid "equality" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:381 +msgid "**==, !=**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:383 +msgid "8" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:383 +msgid "bit-wise and" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:383 +msgid "**&**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:385 +msgid "9" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:385 +msgid "bit-wise exclusive or" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:385 +msgid "**^**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:387 +msgid "10" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:387 +msgid "bit-wise inclusive or" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:387 +msgid "**|**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:389 +msgid "11" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:389 +msgid "logical and" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:389 +msgid "**&&**" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:391 -msgid "You can only use functions that have been defined above (higher in the editor) the function from which you are calling them." +msgid "12 (lowest)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:394 -msgid "Function arguments can have special qualifiers:" +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:391 +msgid "logical inclusive or" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:396 -msgid "**in**: Means the argument is only for reading (default)." +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:391 +msgid "**||**" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:395 +msgid "Flow control" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:397 +msgid "Godot Shading language supports the most common types of flow control:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:437 +msgid "Keep in mind that, in modern GPUs, an infinite loop can exist and can freeze your application (including editor). Godot can't protect you from this, so be careful not to make this mistake!" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:441 +msgid "Discarding" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:443 +msgid "Fragment and light functions can use the **discard** keyword. If used, the fragment is discarded and nothing is written." +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:446 +msgid "Functions" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:448 +msgid "It is possible to define functions in a Godot shader. They use the following syntax:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:463 +msgid "You can only use functions that have been defined above (higher in the editor) the function from which you are calling them." +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:466 +msgid "Function arguments can have special qualifiers:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:468 +msgid "**in**: Means the argument is only for reading (default)." +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:469 msgid "**out**: Means the argument is only for writing." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:398 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:470 msgid "**inout**: Means the argument is fully passed via reference." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:400 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:472 msgid "Example below:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:409 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:481 msgid "Varyings" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:411 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:483 msgid "To send data from the vertex to the fragment processor function, *varyings* are used. They are set for every primitive vertex in the *vertex processor*, and the value is interpolated for every pixel in the fragment processor." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:428 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:500 msgid "Varying can also be an array:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:445 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:517 msgid "Interpolation qualifiers" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:447 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:519 msgid "Certain values are interpolated during the shading pipeline. You can modify how these interpolations are done by using *interpolation qualifiers*." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:464 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:536 msgid "There are two possible interpolation qualifiers:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:467 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 msgid "Qualifier" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:469 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 msgid "**flat**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:469 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 msgid "The value is not interpolated." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:471 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:543 msgid "**smooth**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:471 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:543 msgid "The value is interpolated in a perspective-correct fashion. This is the default." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:476 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 msgid "Uniforms" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:478 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 msgid "Passing values to shaders is possible. These are global to the whole shader and are called *uniforms*. When a shader is later assigned to a material, the uniforms will appear as editable parameters in it. Uniforms can't be written from within the shader." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:488 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:560 msgid "You can set uniforms in the editor in the material. Or you can set them through GDScript:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:494 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:566 msgid "The first argument to ``set_shader_param`` is the name of the uniform in the shader. It must match *exactly* to the name of the uniform in the shader or else it will not be recognized." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:497 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:569 msgid "Any GLSL type except for *void* can be a uniform. Additionally, Godot provides optional shader hints to make the compiler understand for what the uniform is used." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:508 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:580 msgid "It's important to understand that textures that are supplied as color require hints for proper sRGB->linear conversion (i.e. ``hint_albedo``), as Godot’s 3D engine renders in linear color space." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:510 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:582 msgid "Full list of hints below:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:513 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 msgid "Hint" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:515 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 msgid "hint_color" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:515 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 msgid "Used as color" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:517 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 msgid "**int, float**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:517 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 msgid "hint_range(min,max [,step] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:517 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 msgid "Used as range (with min/max/step)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:519 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 msgid "hint_albedo" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:519 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 msgid "Used as albedo color, default white" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:521 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 msgid "hint_black_albedo" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:521 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 msgid "Used as albedo color, default black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 msgid "hint_normal" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 msgid "Used as normalmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 msgid "hint_white" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 msgid "As value, default to white." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 msgid "hint_black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 msgid "As value, default to black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 msgid "hint_aniso" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 msgid "As flowmap, default to right." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:532 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:604 msgid "GDScript uses different variable types than GLSL does, so when passing variables from GDScript to shaders, Godot converts the type automatically. Below is a table of the corresponding types:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:536 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:608 msgid "GDScript type" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:536 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:608 msgid "GLSL type" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:544 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:616 msgid "**Vector2**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:546 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:618 msgid "**Vector3**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:620 msgid "**Color**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:622 msgid "**Transform**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:552 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:624 msgid "**Transform2D**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:555 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 msgid "Be careful when setting shader uniforms from GDScript, no error will be thrown if the type does not match. Your shader will just exhibit undefined behaviour." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:558 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:630 msgid "Uniforms can also be assigned default values:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:568 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:640 msgid "Built-in functions" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:570 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:642 msgid "A large number of built-in functions are supported, conforming to GLSL ES 3.0. When vec_type (float), vec_int_type, vec_uint_type, vec_bool_type nomenclature is used, it can be scalar or vector." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:573 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 msgid "For a list of the functions that are not available in the GLES2 backend, please see the :ref:`Differences between GLES2 and GLES3 doc `." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 msgid "Function" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 msgid "vec_type **radians** ( vec_type degrees )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 msgid "Convert degrees to radians" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 msgid "vec_type **degrees** ( vec_type radians )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 msgid "Convert radians to degrees" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 msgid "vec_type **sin** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 msgid "Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 msgid "vec_type **cos** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 msgid "Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 msgid "vec_type **tan** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 msgid "Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 msgid "vec_type **asin** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 msgid "Arc-Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 msgid "vec_type **acos** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 msgid "Arc-Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 msgid "vec_type **atan** ( vec_type y_over_x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 msgid "Arc-Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 msgid "vec_type **atan** ( vec_type y, vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 msgid "Arc-Tangent to convert vector to angle" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 msgid "vec_type **sinh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 msgid "Hyperbolic-Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 msgid "vec_type **cosh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 msgid "Hyperbolic-Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 msgid "vec_type **tanh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 msgid "Hyperbolic-Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:603 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 msgid "vec_type **asinh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:603 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 msgid "Inverse-Hyperbolic-Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:605 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 msgid "vec_type **acosh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:605 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 msgid "Inverse-Hyperbolic-Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:607 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 msgid "vec_type **atanh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:607 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 msgid "Inverse-Hyperbolic-Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:609 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 msgid "vec_type **pow** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:609 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 msgid "Power" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 msgid "vec_type **exp** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 msgid "Base-e Exponential" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:613 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 msgid "vec_type **exp2** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:613 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 msgid "Base-2 Exponential" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:615 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 msgid "vec_type **log** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:615 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 msgid "Natural Logarithm" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:617 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 msgid "vec_type **log2** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:617 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 msgid "Base-2 Logarithm" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:619 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 msgid "vec_type **sqrt** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:619 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 msgid "Square Root" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:621 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 msgid "vec_type **inversesqrt** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:621 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 msgid "Inverse Square Root" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:623 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 msgid "vec_type **abs** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:623 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:625 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 msgid "Absolute" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:625 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 msgid "ivec_type **abs** ( ivec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 msgid "vec_type **sign** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 msgid "Sign" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 msgid "ivec_type **sign** ( ivec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 msgid "vec_type **floor** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 msgid "Floor" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:633 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 msgid "vec_type **round** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:633 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 msgid "Round" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:635 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 msgid "vec_type **roundEven** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:635 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 msgid "Round nearest even" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:637 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 msgid "vec_type **trunc** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:637 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 msgid "Truncation" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 msgid "vec_type **ceil** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 msgid "Ceil" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:641 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 msgid "vec_type **fract** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:641 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 msgid "Fractional" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 msgid "vec_type **mod** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 msgid "Remainder" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 msgid "vec_type **mod** ( vec_type x , float y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 msgid "vec_type **modf** ( vec_type x, out vec_type i )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 msgid "Fractional of x, with i has integer part" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 msgid "vec_type **min** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 msgid "Minimum" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 msgid "vec_type **max** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 msgid "Maximum" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 msgid "vec_type **clamp** ( vec_type x, vec_type min, vec_type max )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 msgid "Clamp to Min-Max" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 msgid "vec_type **mix** ( float a, float b, float c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 msgid "Linear Interpolate" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 msgid "vec_type **mix** ( vec_type a, vec_type b, float c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 msgid "Linear Interpolate (Scalar Coef.)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 msgid "vec_type **mix** ( vec_type a, vec_type b, vec_type c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 msgid "Linear Interpolate (Vector Coef.)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 msgid "vec_type **mix** ( vec_type a, vec_type b, bvec_type c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 msgid "Linear Interpolate (Boolean-Vector Selection)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 msgid "vec_type **step** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 msgid "``b[i] < a[i] ? 0.0 : 1.0``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 msgid "vec_type **step** ( float a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 msgid "``b[i] < a ? 0.0 : 1.0``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 msgid "vec_type **smoothstep** ( vec_type a, vec_type b, vec_type c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 msgid "Hermite Interpolate" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 msgid "vec_type **smoothstep** ( float a, float b, vec_type c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 msgid "bvec_type **isnan** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 msgid "Scalar, or vector component being NaN" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 msgid "bvec_type **isinf** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 msgid "Scalar, or vector component being INF" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 msgid "ivec_type **floatBitsToInt** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 msgid "Float->Int bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 msgid "uvec_type **floatBitsToUint** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 msgid "Float->UInt bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 msgid "vec_type **intBitsToFloat** ( ivec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 msgid "Int->Float bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 msgid "vec_type **uintBitsToFloat** ( uvec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 msgid "UInt->Float bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 msgid "float **length** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 msgid "Vector Length" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 msgid "float **distance** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 msgid "Distance between vectors i.e ``length(a - b)``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 msgid "float **dot** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 msgid "Dot Product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 msgid "vec3 **cross** ( vec3 a, vec3 b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 msgid "Cross Product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 msgid "vec_type **normalize** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 msgid "Normalize to unit length" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 msgid "vec3 **reflect** ( vec3 I, vec3 N )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 msgid "Reflect" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 msgid "vec3 **refract** ( vec3 I, vec3 N, float eta )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 msgid "Refract" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 msgid "vec_type **faceforward** ( vec_type N, vec_type I, vec_type Nref )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 msgid "If dot(Nref, I) < 0, return N, otherwise –N" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 msgid "mat_type **matrixCompMult** ( mat_type x, mat_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 msgid "Matrix Component Multiplication" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 msgid "mat_type **outerProduct** ( vec_type column, vec_type row )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 msgid "Matrix Outer Product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 msgid "mat_type **transpose** ( mat_type m )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 msgid "Transpose Matrix" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 msgid "float **determinant** ( mat_type m )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 msgid "Matrix Determinant" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 msgid "mat_type **inverse** ( mat_type m )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 msgid "Inverse Matrix" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 msgid "bvec_type **lessThan** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 msgid "Bool vector cmp on < int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 msgid "bvec_type **greaterThan** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 msgid "Bool vector cmp on > int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 msgid "bvec_type **lessThanEqual** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 msgid "Bool vector cmp on <= int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 msgid "bvec_type **greaterThanEqual** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 msgid "Bool vector cmp on >= int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 msgid "bvec_type **equal** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 msgid "Bool vector cmp on == int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 msgid "bvec_type **notEqual** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 msgid "Bool vector cmp on != int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 msgid "bool **any** ( bvec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 msgid "Any component is ``true``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 msgid "bool **all** ( bvec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 msgid "All components are ``true``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:797 msgid "bvec_type **not** ( bvec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:797 msgid "Invert boolean vector" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:799 msgid "ivec2 **textureSize** ( sampler2D_type s, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:799 msgid "Get the size of a 2D texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:801 msgid "ivec3 **textureSize** ( sampler2DArray_type s, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:801 msgid "Get the size of a 2D texture array" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:803 msgid "ivec3 **textureSize** ( sampler3D s, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:803 msgid "Get the size of a 3D texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:805 msgid "ivec2 **textureSize** ( samplerCube s, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:805 msgid "Get the size of a Cube texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:807 msgid "vec4_type **texture** ( sampler2D_type s, vec2 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:807 msgid "Perform a 2D texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:809 msgid "vec4_type **texture** ( sampler2DArray_type s, vec3 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:809 msgid "Perform a 2D texture array read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:811 msgid "vec4_type **texture** ( sampler3D_type s, vec3 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:811 msgid "Perform a 3D texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:813 msgid "vec4 **texture** ( samplerCube s, vec3 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:813 msgid "Perform an Cube texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:815 msgid "vec4_type **textureProj** ( sampler2D_type s, vec3 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:815 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:817 msgid "Perform a 2D texture read with projection" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:817 msgid "vec4_type **textureProj** ( sampler2D_type s, vec4 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:819 msgid "vec4_type **textureProj** ( sampler3D_type s, vec4 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:819 msgid "Perform a 3D texture read with projection" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:821 msgid "vec4_type **textureLod** ( sampler2D_type s, vec2 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:821 msgid "Perform a 2D texture read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:823 msgid "vec4_type **textureLod** ( sampler2DArray_type s, vec3 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:823 msgid "Perform a 2D texture array read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:825 msgid "vec4_type **textureLod** ( sampler3D_type s, vec3 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:825 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:827 msgid "Perform a 3D texture read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:827 msgid "vec4 **textureLod** ( samplerCube s, vec3 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:829 msgid "vec4_type **textureProjLod** ( sampler2D_type s, vec3 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:829 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:831 msgid "Perform a 2D texture read with projection/lod" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:831 msgid "vec4_type **textureProjLod** ( sampler2D_type s, vec4 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:833 msgid "vec4_type **textureProjLod** ( sampler3D_type s, vec4 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:833 msgid "Perform a 3D texture read with projection/lod" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:835 msgid "vec4_type **texelFetch** ( sampler2D_type s, ivec2 uv, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:835 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:837 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:839 msgid "Fetch a single texel using integer coords" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:837 msgid "vec4_type **texelFetch** ( sampler2DArray_type s, ivec3 uv, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:839 msgid "vec4_type **texelFetch** ( sampler3D_type s, ivec3 uv, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:841 msgid "vec_type **dFdx** ( vec_type p )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:841 msgid "Derivative in x using local differencing" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:843 msgid "vec_type **dFdy** ( vec_type p )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:843 msgid "Derivative in y using local differencing" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:845 msgid "vec_type **fwidth** ( vec_type p )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:845 msgid "Sum of absolute derivative in x and y" msgstr "" diff --git a/sphinx/templates/tutorials/shading/shading_reference/spatial_shader.pot b/sphinx/templates/tutorials/shading/shading_reference/spatial_shader.pot index 50fee5431c..86732aef7b 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/spatial_shader.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/spatial_shader.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/visual_shaders.pot b/sphinx/templates/tutorials/shading/visual_shaders.pot index e92e1eef44..4ad0e97c41 100644 --- a/sphinx/templates/tutorials/shading/visual_shaders.pot +++ b/sphinx/templates/tutorials/shading/visual_shaders.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/index.pot b/sphinx/templates/tutorials/shading/your_first_shader/index.pot index b80af256b1..fd3df3ed3f 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/index.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/what_are_shaders.pot b/sphinx/templates/tutorials/shading/your_first_shader/what_are_shaders.pot index fb6b2be3cb..14718a0d2b 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/what_are_shaders.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/what_are_shaders.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/your_first_canvasitem_shader.pot b/sphinx/templates/tutorials/shading/your_first_shader/your_first_canvasitem_shader.pot index e3b3cc9745..0400fac7ee 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/your_first_canvasitem_shader.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/your_first_canvasitem_shader.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/your_first_spatial_shader.pot b/sphinx/templates/tutorials/shading/your_first_shader/your_first_spatial_shader.pot index e9f0841092..9649ae142b 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/your_first_spatial_shader.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/your_first_spatial_shader.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/your_second_spatial_shader.pot b/sphinx/templates/tutorials/shading/your_first_shader/your_second_spatial_shader.pot index 845d235efc..c9d324b9cc 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/your_second_spatial_shader.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/your_second_spatial_shader.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/threads/index.pot b/sphinx/templates/tutorials/threads/index.pot index 0b9ccda13d..97edcf9a03 100644 --- a/sphinx/templates/tutorials/threads/index.pot +++ b/sphinx/templates/tutorials/threads/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/threads/thread_safe_apis.pot b/sphinx/templates/tutorials/threads/thread_safe_apis.pot index e2bce0de83..82f2bc8645 100644 --- a/sphinx/templates/tutorials/threads/thread_safe_apis.pot +++ b/sphinx/templates/tutorials/threads/thread_safe_apis.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/threads/using_multiple_threads.pot b/sphinx/templates/tutorials/threads/using_multiple_threads.pot index a0d9169e1a..b7c322682c 100644 --- a/sphinx/templates/tutorials/threads/using_multiple_threads.pot +++ b/sphinx/templates/tutorials/threads/using_multiple_threads.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/viewports/custom_postprocessing.pot b/sphinx/templates/tutorials/viewports/custom_postprocessing.pot index 6ea0c94baa..71c0d8d49e 100644 --- a/sphinx/templates/tutorials/viewports/custom_postprocessing.pot +++ b/sphinx/templates/tutorials/viewports/custom_postprocessing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/viewports/index.pot b/sphinx/templates/tutorials/viewports/index.pot index 41882b3d46..74f6fbc8fa 100644 --- a/sphinx/templates/tutorials/viewports/index.pot +++ b/sphinx/templates/tutorials/viewports/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/viewports/multiple_resolutions.pot b/sphinx/templates/tutorials/viewports/multiple_resolutions.pot index 81c5fc28e6..634c525020 100644 --- a/sphinx/templates/tutorials/viewports/multiple_resolutions.pot +++ b/sphinx/templates/tutorials/viewports/multiple_resolutions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/viewports/using_viewport_as_texture.pot b/sphinx/templates/tutorials/viewports/using_viewport_as_texture.pot index 869762b806..93df2ad03d 100644 --- a/sphinx/templates/tutorials/viewports/using_viewport_as_texture.pot +++ b/sphinx/templates/tutorials/viewports/using_viewport_as_texture.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/viewports/viewports.pot b/sphinx/templates/tutorials/viewports/viewports.pot index 916011dcc0..1dd280e029 100644 --- a/sphinx/templates/tutorials/viewports/viewports.pot +++ b/sphinx/templates/tutorials/viewports/viewports.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/index.pot b/sphinx/templates/tutorials/vr/index.pot index 8dd12e4551..b02ff061e9 100644 --- a/sphinx/templates/tutorials/vr/index.pot +++ b/sphinx/templates/tutorials/vr/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/vr_primer.pot b/sphinx/templates/tutorials/vr/vr_primer.pot index 872c23fe25..c11c60b124 100644 --- a/sphinx/templates/tutorials/vr/vr_primer.pot +++ b/sphinx/templates/tutorials/vr/vr_primer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/vr_starter_tutorial/index.pot b/sphinx/templates/tutorials/vr/vr_starter_tutorial/index.pot index a6c66b7a37..fdb7a93963 100644 --- a/sphinx/templates/tutorials/vr/vr_starter_tutorial/index.pot +++ b/sphinx/templates/tutorials/vr/vr_starter_tutorial/index.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.pot b/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.pot index 30c6013e2f..4a26a483dd 100644 --- a/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.pot +++ b/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.pot b/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.pot index 3df675fa66..aad1adfb6b 100644 --- a/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.pot +++ b/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/templates_list.txt b/templates_list.txt index d63608c2d6..eba19a6ed3 100644 --- a/templates_list.txt +++ b/templates_list.txt @@ -205,6 +205,7 @@ tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.pot tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.pot tutorials/plugins/index.pot tutorials/plugins/editor/index.pot +tutorials/plugins/editor/installing_plugins.pot tutorials/plugins/editor/making_plugins.pot tutorials/plugins/editor/making_main_screen_plugins.pot tutorials/plugins/editor/import_plugins.pot @@ -243,6 +244,7 @@ tutorials/misc/running_code_in_the_editor.pot tutorials/misc/change_scenes_manually.pot tutorials/misc/gles2_gles3_differences.pot tutorials/misc/instancing_with_signals.pot +tutorials/misc/state_design_pattern.pot tutorials/debug/index.pot tutorials/debug/overview_of_debugging_tools.pot tutorials/legal/index.pot @@ -280,6 +282,7 @@ development/file_formats/index.pot development/file_formats/tscn.pot community/contributing/index.pot community/contributing/ways_to_contribute.pot +community/contributing/best_practices_for_engine_contributors.pot community/contributing/pr_workflow.pot community/contributing/code_style_guidelines.pot community/contributing/bug_triage_guidelines.pot diff --git a/weblate/docs.pot b/weblate/docs.pot index aa11f45869..25f7edc4a6 100644 --- a/weblate/docs.pot +++ b/weblate/docs.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot-docs-l10n\n" -"POT-Creation-Date: 2020-02-08 22:29+0100\n" +"POT-Creation-Date: 2020-03-13 17:49+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -193,10 +193,12 @@ msgstr "" #: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:7 #: ../../docs/tutorials/plugins/android/android_plugin.rst:7 #: ../../docs/tutorials/misc/binary_serialization_api.rst:7 +#: ../../docs/tutorials/misc/state_design_pattern.rst:7 #: ../../docs/development/cpp/custom_resource_format_loaders.rst:7 #: ../../docs/development/cpp/custom_audiostreams.rst:7 #: ../../docs/development/cpp/custom_godot_servers.rst:7 #: ../../docs/development/editor/introduction.rst:4 +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:7 msgid "Introduction" msgstr "" @@ -375,7 +377,7 @@ msgid "FAQ" msgstr "" #: ../../docs/about/faq.rst:7 -#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:29 +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:42 msgid "Frequently asked questions" msgstr "" @@ -1469,11 +1471,11 @@ msgid ":ref:`doc_gles2_gles3_differences`" msgstr "" #: ../../docs/about/docs_changelog.rst:212 -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:350 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:349 #: ../../docs/development/compiling/index.rst:2 #: ../../docs/development/compiling/compiling_for_windows.rst:85 #: ../../docs/development/compiling/compiling_for_x11.rst:85 -#: ../../docs/development/compiling/compiling_for_osx.rst:23 +#: ../../docs/development/compiling/compiling_for_osx.rst:31 #: ../../docs/development/compiling/compiling_for_ios.rst:19 #: ../../docs/development/compiling/compiling_for_uwp.rst:33 msgid "Compiling" @@ -1603,25 +1605,25 @@ msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:82 msgid "" "Welcome to Godot! With your project open, you should see the editor’s " -"interface with empty docks on the right side." +"interface with menus along the top of the interface and docks along the far " +"extremes of the interface on either side of the viewport." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:87 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:88 msgid "" "At the top, from left to right, you can see the **main menus**, the " "**workspaces**, and the **playtest buttons**." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:90 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:91 msgid "" -"On the bottom left side, you have the **FileSystem dock**, where you’ll " -"manage your project files and assets." +"The **FileSystem dock** is where you’ll manage your project files and assets." msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:95 msgid "" -"On the right side, you’ll find the **Scene dock**, which lists the active " -"scene’s content and the **Inspector** in the bottom right corner." +"The **Scene dock** lists the active scene’s content and the **Inspector** " +"allows for the management of the properties of a scene's content." msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:100 @@ -1650,67 +1652,67 @@ msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:118 msgid "" "You’ll use the **2D workspace** for all types of games. In addition to 2D " -"games, the 2D workspace is where you'll build your interfaces. Press F1 to " -"access it." +"games, the 2D workspace is where you'll build your interfaces. Press :kbd:" +"`F1` (or :kbd:`Alt + 1` on macOS) to access it." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:123 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:124 msgid "" "In the **3D workspace**, you can work with meshes, lights, and design levels " -"for 3D games. Press F2 to access it." +"for 3D games. Press :kbd:`F2` (or :kbd:`Alt + 2` on macOS) to access it." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:128 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:129 msgid "" "Notice the perspective button under the toolbar, it opens a list of options " "related to the 3D viewport." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:133 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:134 msgid "" "Read :ref:`doc_introduction_to_3d` for more detail about **3D workspace**." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:135 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:136 msgid "" "The **Script** workspace is a complete code editor with a debugger, rich " -"auto-completion, and built-in code reference. Press F3 to access it, and F4 " -"to search the reference." +"auto-completion, and built-in code reference. Press :kbd:`F3` (or :kbd:`Alt " +"+ 3` on macOS) to access it, and :kbd:`F4` to search the reference." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:141 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:142 msgid "" "Finally the **AssetLib** is a library of Free add-ons, scripts and assets to " "use in your projects." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:145 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:146 msgid "Modify the interface" msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:147 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:148 msgid "" "Godot’s interface lives in a single window. You cannot split it across " "multiple screens although you can work with an external code editor like " "Atom or Visual Studio Code for instance." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:152 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:153 msgid "Move and resize docks" msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:154 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:155 msgid "" "Click and drag on the edge of any dock or panel to resize it horizontally or " "vertically." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:159 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:160 msgid "" "Click the three-dotted icon at the top of any dock to change its location." msgstr "" -#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:164 +#: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:165 msgid "" "Go to the ``Editor`` menu and ``Editor Settings`` to fine-tune the look and " "feel of the editor." @@ -1805,7 +1807,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:55 -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:75 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:83 msgid "Scenes" msgstr "" @@ -1924,34 +1926,33 @@ msgstr "" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:133 msgid "" -"The node appears in the scene tree editor (box in the top right corner), and " -"the label properties appear in the Inspector (box in the bottom right " -"corner)." +"The node appears in the scene tree editor in the Scene dock, and the label " +"properties appear in the Inspector dock." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:137 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:136 msgid "" "The next step will be to change the \"Text\" Property of the label. Let's " "change it to \"Hello World\":" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:142 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:141 msgid "" "Ok, everything's ready to run the scene! Press the PLAY SCENE Button on the " -"top bar (or hit F6):" +"top bar (or hit :kbd:`F6`):" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:147 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:146 msgid "Aaaand... Oops." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:151 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:150 msgid "" "Scenes need to be saved to be run, so save the scene to something like Hello." "tscn in Scene -> Save:" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:156 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:155 msgid "" "And here's when something funny happens. The file dialog is a special file " "dialog, and only allows you to save inside the project. The project root is " @@ -1962,28 +1963,28 @@ msgid "" "are from inside the game." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:164 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:163 msgid "" "After saving the scene and pressing run scene again, the \"Hello World\" " "demo should finally execute:" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:169 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:168 msgid "Success!" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:173 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:172 msgid "" "If this doesn't immediately work and you have a hiDPI display on at least " "one of your monitors, go to **Project → Project Settings → Display → " "Window** then enable **Allow Hidpi** under **Dpi**." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:181 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:180 msgid "Configuring the project" msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:183 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:182 msgid "" "Ok, it's time to configure the project. Right now, the only way to run " "something is to execute the current scene. Projects, however, may have " @@ -1991,7 +1992,7 @@ msgid "" "scene that will be loaded any time the project is run." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:188 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:187 msgid "" "These settings are all stored in a project.godot file, which is a plaintext " "file in win.ini format (for easy editing). There are dozens of settings that " @@ -2000,23 +2001,23 @@ msgid "" "of frontend to editing a project.godot file." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:194 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:193 msgid "To access that dialog, select Project -> Project Settings. Try it now." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:196 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:195 msgid "" "Once the window opens, let's select a main scene. Locate the `Application/" "Run/Main Scene` property and click on it to select 'Hello.tscn'." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:201 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:200 msgid "" "Now, with this change, when you press the regular Play button (or F5), this " "scene will run, no matter which scene is actively being edited." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:204 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:203 msgid "" "The project settings dialog provides a lot of options that can be saved to a " "project.godot file and shows their default values. If you change a value, a " @@ -2024,18 +2025,18 @@ msgid "" "saved to the project.godot file and remembered." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:209 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:208 msgid "" "As a side note, it is also possible to add custom configuration options and " "read them in at run-time using the :ref:`ProjectSettings " "` singleton." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:213 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:212 msgid "To be continued..." msgstr "" -#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:215 +#: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:214 msgid "" "This tutorial talked about \"scenes and nodes\", but so far there has been " "only *one* scene and *one* node! Don't worry, the next tutorial will expand " @@ -2139,7 +2140,7 @@ msgstr "" msgid "" "You can add as many instances as you like to a scene, either by using the " "\"Instance\" button again, or by clicking on the ball instance and pressing " -"\"Duplicate\" (Ctrl-D):" +"\"Duplicate\" (:kbd:`Ctrl + D`):" msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:86 @@ -2152,24 +2153,25 @@ msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:93 msgid "" -"Open the ``Ball`` scene and add a ``PhysicsMaterial`` by clicking on the " -"down arrow and selecting \"New PhysicsMaterial\"." +"Open the ``Ball`` scene and add a ``PhysicsMaterial`` by opening the " +"\"Physics Material Override\" dropdown in the Inspector dock and selecting " +"\"New PhysicsMaterial\"." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:98 +#: ../../docs/getting_started/step_by_step/instancing.rst:99 msgid "" "Then, expand the material by clicking on it, and set the ``Bounce`` property " "to ``1``." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:103 +#: ../../docs/getting_started/step_by_step/instancing.rst:104 msgid "" "Press \"Play\" and notice that all of the instanced balls are now much more " "bouncy. Because the instanced balls are based on the saved scene, changes to " "that scene will affect all instances." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:107 +#: ../../docs/getting_started/step_by_step/instancing.rst:108 msgid "" "You can also adjust individual instances. Set the bounce value back to ``0`` " "and then in the ``Main`` scene, select one of the instanced balls. Resources " @@ -2178,7 +2180,7 @@ msgid "" "its ``Bounce`` to ``1`` and press \"Play\"." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:115 +#: ../../docs/getting_started/step_by_step/instancing.rst:116 msgid "" "Notice that a grey \"revert\" button appears next to the adjusted property. " "When this button is present, it means you modified a property in the " @@ -2188,14 +2190,14 @@ msgid "" "saved scene." msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:123 -#: ../../docs/getting_started/step_by_step/signals.rst:209 +#: ../../docs/getting_started/step_by_step/instancing.rst:124 +#: ../../docs/getting_started/step_by_step/signals.rst:263 #: ../../docs/getting_started/workflow/best_practices/scenes_versus_scripts.rst:151 #: ../../docs/tutorials/shading/your_first_shader/your_first_canvasitem_shader.rst:214 msgid "Conclusion" msgstr "" -#: ../../docs/getting_started/step_by_step/instancing.rst:125 +#: ../../docs/getting_started/step_by_step/instancing.rst:126 msgid "" "Instancing can be useful when you want to create many copies of the same " "object. It is also possible to create instances in code by using GDScript, " @@ -2548,7 +2550,7 @@ msgstr "" #: ../../docs/getting_started/step_by_step/scripting.rst:107 msgid "" "Use the \"Add Child Node\" dialogue accessed from the Scene tab (or by " -"pressing ``Ctrl+A``) to create a hierarchy with the following nodes:" +"pressing :kbd:`Ctrl + A`) to create a hierarchy with the following nodes:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting.rst:110 @@ -3045,10 +3047,10 @@ msgid "Only GDScript creates global variables for each named script." msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:4 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1292 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:464 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:164 -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:694 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:696 #: ../../docs/development/cpp/object_class.rst:211 msgid "Signals" msgstr "" @@ -3142,48 +3144,56 @@ msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:63 msgid "" +"On the right side, you can bind an arbitrary number of arguments of " +"(possibly) different types. This can be useful when you have more than one " +"signal connected to the same method, as each signal propagation will result " +"in different values for those extra call arguments." +msgstr "" + +#: ../../docs/getting_started/step_by_step/signals.rst:67 +msgid "" "On the bottom of the window is a field labeled \"Receiver Method\". This is " "the name of the function in the target node's script that you want to use. " "By default, Godot will create this function using the naming convention " "``_on__`` but you can change it if you wish." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:68 +#: ../../docs/getting_started/step_by_step/signals.rst:72 msgid "" "Click \"Connect\" and you'll see that the function has been created in the " "script:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:88 +#: ../../docs/getting_started/step_by_step/signals.rst:92 msgid "" "Now we can replace the placeholder code with whatever code we want to run " "when the signal is received. Let's make the Sprite blink:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:112 +#: ../../docs/getting_started/step_by_step/signals.rst:116 msgid "" "Run the scene and you'll see the Sprite blinking on and off every second. " "You can change the Timer's *Wait Time* property to alter this." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:116 +#: ../../docs/getting_started/step_by_step/signals.rst:120 msgid "Connecting signals in code" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:118 +#: ../../docs/getting_started/step_by_step/signals.rst:122 msgid "" "You can also make the signal connection in code rather than with the editor. " "This is usually necessary when you're instancing nodes via code and so you " "can't use the editor to make the connection." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:122 +#: ../../docs/getting_started/step_by_step/signals.rst:126 msgid "" "First, disconnect the signal by selecting the connection in the Timer's " "\"Node\" tab and clicking disconnect." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:127 +#: ../../docs/getting_started/step_by_step/signals.rst:131 msgid "" "To make the connection in code, we can use the ``connect`` function. We'll " "put it in ``_ready()`` so that the connection will be made on run. The " @@ -3192,25 +3202,45 @@ msgid "" "connection:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:160 +#: ../../docs/getting_started/step_by_step/signals.rst:164 msgid "Custom signals" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:162 +#: ../../docs/getting_started/step_by_step/signals.rst:166 msgid "You can also declare your own custom signals in Godot:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:180 +#: ../../docs/getting_started/step_by_step/signals.rst:184 msgid "" "Once declared, your custom signals will appear in the Inspector and can be " "connected in the same way as a node's built-in signals." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:183 +#: ../../docs/getting_started/step_by_step/signals.rst:187 msgid "To emit a signal via code, use the ``emit_signal`` function:" msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:211 +#: ../../docs/getting_started/step_by_step/signals.rst:212 +msgid "" +"A signal can also optionally declare one or more arguments. Specify the " +"argument names between parentheses:" +msgstr "" + +#: ../../docs/getting_started/step_by_step/signals.rst:232 +msgid "" +"The signal arguments show up in the editor's node dock, and Godot can use " +"them to generate callback functions for you. However, you can still emit any " +"number of arguments when you emit signals. So it's up to you to emit the " +"correct values." +msgstr "" + +#: ../../docs/getting_started/step_by_step/signals.rst:237 +msgid "" +"To pass values, add them as the second argument to the ``emit_signal`` " +"function:" +msgstr "" + +#: ../../docs/getting_started/step_by_step/signals.rst:265 msgid "" "Many of Godot's built-in node types provide signals you can use to detect " "events. For example, an :ref:`Area2D ` representing a coin " @@ -3218,7 +3248,7 @@ msgid "" "its collision shape, allowing you to know when the player collected it." msgstr "" -#: ../../docs/getting_started/step_by_step/signals.rst:216 +#: ../../docs/getting_started/step_by_step/signals.rst:270 msgid "" "In the next section, :ref:`doc_your_first_game`, you'll build a complete " "game including several uses of signals to connect different game components." @@ -3264,6 +3294,7 @@ msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:28 #: ../../docs/getting_started/workflow/project_setup/index.rst:2 #: ../../docs/tutorials/2d/using_tilemaps.rst:21 +#: ../../docs/tutorials/misc/state_design_pattern.rst:233 #: ../../docs/development/cpp/configuring_an_ide.rst:184 #: ../../docs/development/cpp/configuring_an_ide.rst:311 msgid "Project setup" @@ -3349,8 +3380,8 @@ msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:85 msgid "" -"Save the scene. Click Scene -> Save, or press ``Ctrl+S`` on Windows/Linux or " -"``Command+S`` on Mac." +"Save the scene. Click Scene -> Save, or press :kbd:`Ctrl + S` on Windows/" +"Linux or :kbd:`Cmd + S` on macOS." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:87 @@ -3940,7 +3971,7 @@ msgstr "" msgid "" "Next, click on the Player and connect the ``hit`` signal. We want to make a " "new function named ``game_over``, which will handle what needs to happen " -"when a game ends. Type \"game_over\" in the \"Method In Node\" box at the " +"when a game ends. Type \"game_over\" in the \"Receiver Method\" box at the " "bottom of the \"Connecting Signal\" window. Add the following code, as well " "as a ``new_game`` function to set everything up for a new game:" msgstr "" @@ -4347,8 +4378,8 @@ msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1230 msgid "" -"Now when the start button appears, you can either click it or press the " -"spacebar to start the game." +"Now when the start button appears, you can either click it or press :kbd:" +"`Space` to start the game." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1234 @@ -4706,7 +4737,7 @@ msgid "" "project." msgstr "" -#: ../../docs/getting_started/step_by_step/exporting.rst:418 +#: ../../docs/getting_started/step_by_step/exporting.rst:420 msgid "" "While WASM is supported in all major browsers, it is still an emerging " "technology and you may find some things that don't work. Make sure you have " @@ -4789,7 +4820,7 @@ msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:49 #: ../../docs/tutorials/assetlib/using_assetlib.rst:16 -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:22 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:83 msgid "|image0|" msgstr "" @@ -5202,7 +5233,7 @@ msgid "" "for each of the button's states. Most of the time, you'll use the Normal, " "Pressed, and Hover textures. Focused is useful if your interface listens to " "the keyboard's input. The sixth image slot, the Click Mask, lets you define " -"the clickable area using a 2-bit, pure black and white image." +"the clickable area using a 1-bit, pure black and white image." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:107 @@ -5759,8 +5790,8 @@ msgid "" "We have to add a root node before we can save the scene. Your UI's root " "should be the outermost container or element. In this case it's a " "``MarginContainer``. ``MarginContainer`` is a good starting point for most " -"interfaces, as you often need padding around the UI. Press ``Meta+S`` to " -"save the scene to the disk. Name it *MainMenu*." +"interfaces, as you often need padding around the UI. Press :kbd:`Meta + S` " +"to save the scene to the disk. Name it *MainMenu*." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:132 @@ -5820,10 +5851,10 @@ msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:155 msgid "" -"Click the **Add Node** button or press ``Meta+A`` on your keyboard. Start to " -"type ``TextureRect`` to find the corresponding node and press enter. With " -"the new node selected, press ``Meta+D`` five times to create five extra " -"``TextureRect`` instances." +"Click the **Add Node** button or press :kbd:`Meta + A` on your keyboard. " +"Start to type ``TextureRect`` to find the corresponding node and press " +"enter. With the new node selected, press :kbd:`Meta + D` five times to " +"create five extra ``TextureRect`` instances." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:160 @@ -5932,11 +5963,11 @@ msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:235 msgid "" "To space out the menu options and the logo on the left, we'll use one final " -"container and its size flags. Select the ``VBoxContainer`` and press ``Meta" -"+A`` to add a new node inside it. Add a second ``VBoxContainer`` and name it " -"*MenuOptions*. Select all three menu options, ``Continue``, ``NewGame`` and " -"``Options``, and drag and drop them inside the new ``VBoxContainer``. The " -"UI's layout should barely change, if at all." +"container and its size flags. Select the ``VBoxContainer`` and press :kbd:" +"`Meta + A` to add a new node inside it. Add a second ``VBoxContainer`` and " +"name it *MenuOptions*. Select all three menu options, ``Continue``, " +"``NewGame`` and ``Options``, and drag and drop them inside the new " +"``VBoxContainer``. The UI's layout should barely change, if at all." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:245 @@ -6003,7 +6034,7 @@ msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:289 msgid "" "The order in which you nest matters. To see if your UI adapts nicely to " -"different screen ratios, select the root node, press the Q key to activate " +"different screen ratios, select the root node, press :kbd:`Q` to activate " "the Select Mode, select the container and click and drag on one of the " "container's corners to resize it. The UI components should flow inside of it." msgstr "" @@ -6280,8 +6311,9 @@ msgid "" "As they have a container as their direct parent, we cannot move them freely: " "the ``Count`` node will always reset their anchors, their size and position. " "Try to move and resize the nodes in the viewport. Then, select any of the " -"three textures and press Ctrl Up or Ctrl Down to reorder them in the Scene " -"dock. They'll snap back to their previous size and position." +"three textures and press :kbd:`Ctrl + Up` or :kbd:`Ctrl + Down` to reorder " +"them in the Scene dock. They'll snap back to their previous size and " +"position." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:170 @@ -6405,10 +6437,10 @@ msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:259 msgid "" -"Under the ``Bar`` node, select ``Count`` and press Ctrl D to duplicate it. " -"Drag and drop the new node under the ``Counters`` ``HBoxContainer`` at the " -"bottom of the scene tree. You should see it resize automatically. Don't " -"worry about this for now, we'll fix the size soon." +"Under the ``Bar`` node, select ``Count`` and press :kbd:`Ctrl + D` to " +"duplicate it. Drag and drop the new node under the ``Counters`` " +"``HBoxContainer`` at the bottom of the scene tree. You should see it resize " +"automatically. Don't worry about this for now, we'll fix the size soon." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:264 @@ -6601,8 +6633,8 @@ msgstr "" msgid "" "Go to ``Scene -> New Inherited Scene`` to create a new type of ``Bar``. " "Select the Bar scene and open it. You should see a new [unsaved] tab, that's " -"like your ``Bar``, but with all nodes except the root in grey. Press ``Meta" -"+S`` to save the new inherited scene and name it ``LifeBar``." +"like your ``Bar``, but with all nodes except the root in grey. Press :kbd:" +"`Meta + S` to save the new inherited scene and name it ``LifeBar``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:416 @@ -6685,10 +6717,10 @@ msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:476 msgid "" -"When you duplicate a node from the Scene tree, with ``Meta+D``, it shares " -"its resources with the original node. You need to use ``Make Sub-Resources " -"Unique`` before you can tweak the resources without affecting the source " -"node." +"When you duplicate a node from the Scene tree, with :kbd:`Meta + D`, it " +"shares its resources with the original node. You need to use ``Make Sub-" +"Resources Unique`` before you can tweak the resources without affecting the " +"source node." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:481 @@ -7345,8 +7377,8 @@ msgstr "" msgid "" "Also call ``update_health`` at the end of the ``_ready`` function to " "initialize the ``Number`` node's ``text`` with the right value at the start " -"of the game. Press F5 to test the game: the life bar updates with every " -"attack!" +"of the game. Press :kbd:`F5` to test the game: the life bar updates with " +"every attack!" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:361 @@ -7810,8 +7842,8 @@ msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:73 msgid "" -"Pressing \"Play selected animation from start. (Shift-D)\" on the animation " -"panel will make the logo descend." +"Pressing \"Play selected animation from start\" button on the animation " +"panel (or :kbd:`Shift + D` on keyboard) will make the logo descend." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:78 @@ -7828,7 +7860,7 @@ msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:4 #: ../../docs/tutorials/threads/thread_safe_apis.rst:58 #: ../../docs/development/file_formats/tscn.rst:257 -#: ../../docs/community/tutorials.rst:50 +#: ../../docs/community/tutorials.rst:51 msgid "Resources" msgstr "" @@ -8804,7 +8836,7 @@ msgid "OS (editor)" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:25 -msgid "Windows, macOS, Linux (unofficial and unsupported)" +msgid "Windows, macOS, Linux" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:25 @@ -9393,14 +9425,14 @@ msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:62 #: ../../docs/getting_started/editor/command_line_tutorial.rst:90 #: ../../docs/getting_started/editor/command_line_tutorial.rst:120 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:160 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:165 #: ../../docs/getting_started/workflow/assets/importing_images.rst:93 #: ../../docs/tutorials/inputs/inputevent.rst:130 #: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:51 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:21 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:467 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:513 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:15 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:125 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:179 @@ -10211,29 +10243,30 @@ msgid "" "simple example of how GDScript looks." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:129 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:134 msgid "" "If you have previous experience with statically typed languages such as C, C+" "+, or C# but never used a dynamically typed one before, it is advised you " "read this tutorial: :ref:`doc_gdscript_more_efficiently`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:134 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:139 +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:12 msgid "Language" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:136 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:141 msgid "" "In the following, an overview is given to GDScript. Details, such as which " "methods are available to arrays or other objects, should be looked up in the " "linked class descriptions." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:141 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:146 msgid "Identifiers" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:143 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:148 msgid "" "Any string that restricts itself to alphabetic characters (``a`` to ``z`` " "and ``A`` to ``Z``), digits (``0`` to ``9``) and ``_`` qualifies as an " @@ -10241,11 +10274,11 @@ msgid "" "Identifiers are case-sensitive (``foo`` is different from ``FOO``)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:149 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:154 msgid "Keywords" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:151 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:156 msgid "" "The following is the list of keywords supported by the language. Since " "keywords are reserved words (tokens), they can't be used as identifiers. " @@ -10253,606 +10286,606 @@ msgid "" "types as listed in the following sections are also reserved." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:156 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:161 msgid "" "Keywords are defined in the `GDScript tokenizer `_ in " "case you want to take a look under the hood." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:160 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:165 msgid "Keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:162 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:167 msgid "if" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:162 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:164 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:166 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:167 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:169 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:171 msgid "See `if/else/elif`_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:164 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:169 msgid "elif" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:166 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:171 msgid "else" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:168 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:804 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:173 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:809 msgid "for" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:168 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:173 msgid "See for_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:170 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:793 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:175 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:798 msgid "while" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:170 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:175 msgid "See while_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:172 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:839 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:177 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:844 msgid "match" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:172 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:177 msgid "See match_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:174 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:179 msgid "break" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:174 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:179 msgid "Exits the execution of the current ``for`` or ``while`` loop." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:176 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:181 msgid "continue" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:176 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:181 msgid "" "Immediately skips to the next iteration of the ``for`` or ``while`` loop." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:178 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:183 msgid "pass" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:178 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:183 msgid "" "Used where a statement is required syntactically but execution of code is " "undesired, e.g. in empty functions." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:180 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:185 msgid "return" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:180 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:185 msgid "Returns a value from a function." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:182 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:187 msgid "class" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:182 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:187 msgid "Defines a class." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:184 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:189 msgid "extends" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:184 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:189 msgid "Defines what class to extend with the current class." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:186 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:191 #: ../../docs/tutorials/i18n/locales.rst:360 msgid "is" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:186 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:191 msgid "" "Tests whether a variable extends a given class, or is of a given built-in " "type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:188 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:193 msgid "as" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:188 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:193 msgid "Cast the value to a given type if possible." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:190 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:195 msgid "self" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:190 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:195 msgid "Refers to current class instance." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:192 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:197 msgid "tool" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:192 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:197 msgid "Executes the script in the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:194 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:199 msgid "signal" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:194 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:199 msgid "Defines a signal." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:196 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:201 msgid "func" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:196 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:201 msgid "Defines a function." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:198 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:203 msgid "static" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:198 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:203 msgid "Defines a static function. Static member variables are not allowed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:200 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:205 msgid "const" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:200 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:205 msgid "Defines a constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:202 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:207 msgid "enum" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:202 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:207 msgid "Defines an enum." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:204 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:209 msgid "var" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:204 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:209 msgid "Defines a variable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:206 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:211 msgid "onready" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:206 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:211 msgid "" "Initializes a variable once the Node the script is attached to and its " "children are part of the scene tree." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:208 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:213 msgid "export" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:208 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:213 msgid "" "Saves a variable along with the resource it's attached to and makes it " "visible and modifiable in the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:210 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:215 msgid "setget" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:210 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:215 msgid "Defines setter and getter functions for a variable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:212 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:217 msgid "breakpoint" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:212 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:217 msgid "Editor helper for debugger breakpoints." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:214 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:219 msgid "preload" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:214 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:219 msgid "Preloads a class or variable. See `Classes as resources`_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:216 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:221 msgid "yield" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:216 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:221 msgid "Coroutine support. See `Coroutines with yield`_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:218 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:223 msgid "assert" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:218 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:223 msgid "" "Asserts a condition, logs error on failure. Ignored in non-debug builds. See " "`Assert keyword`_." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:220 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:225 msgid "remote" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:220 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:222 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:224 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:226 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:228 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:225 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:227 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:229 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:231 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:233 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:235 msgid "" "Networking RPC annotation. See :ref:`high-level multiplayer docs " "`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:222 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:227 msgid "master" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:224 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:229 msgid "puppet" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:226 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:231 msgid "remotesync" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:228 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:233 msgid "mastersync" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:235 msgid "puppetsync" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:232 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:237 msgid "PI" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:232 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:237 msgid "PI constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:234 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:239 msgid "TAU" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:234 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:239 msgid "TAU constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:236 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:241 msgid "INF" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:236 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:241 msgid "Infinity constant. Used for comparisons." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:238 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:243 msgid "NAN" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:238 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:243 msgid "NAN (not a number) constant. Used for comparisons." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:242 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:247 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:470 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:290 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:362 msgid "Operators" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:244 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:249 msgid "The following is the list of supported operators and their precedence." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:247 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:252 msgid "**Operator**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:247 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:252 #: ../../docs/getting_started/workflow/export/feature_tags.rst:33 msgid "**Description**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:249 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 msgid "``x[index]``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:249 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 msgid "Subscription (highest priority)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:251 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 msgid "``x.attribute``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:251 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 msgid "Attribute reference" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:253 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 msgid "``foo()``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:253 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 msgid "Function call" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:255 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 msgid "``is``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:255 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 msgid "Instance type checker" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:257 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 msgid "``~``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:257 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 msgid "Bitwise NOT" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:259 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 msgid "``-x``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:259 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 msgid "Negative / Unary negation" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:261 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 msgid "``*`` ``/`` ``%``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:261 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 msgid "Multiplication / Division / Remainder" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:263 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 msgid "" "These operators have the same behavior as C++. Integer division is truncated " "rather than returning a fractional number, and the % operator is only " "available for ints (\"fmod\" for floats)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:269 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:134 msgid "``+``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:269 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 msgid "Addition / Concatenation of arrays" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:271 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:143 msgid "``-``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:271 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 msgid "Subtraction" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:273 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 msgid "``<<`` ``>>``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:273 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 msgid "Bit shifting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:275 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:280 msgid "``&``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:275 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:280 msgid "Bitwise AND" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:277 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:282 msgid "``^``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:277 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:282 msgid "Bitwise XOR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:279 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:284 msgid "``|``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:279 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:284 msgid "Bitwise OR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:281 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:286 msgid "``<`` ``>`` ``==`` ``!=`` ``>=`` ``<=``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:281 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:286 msgid "Comparisons" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:283 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:288 msgid "``in``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:283 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:288 msgid "Content test" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:290 msgid "``!`` ``not``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:290 msgid "Boolean NOT" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:292 msgid "``and`` ``&&``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:292 msgid "Boolean AND" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:294 msgid "``or`` ``||``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:294 msgid "Boolean OR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:296 msgid "``if x else``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:296 msgid "Ternary if/else" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:298 msgid "``=`` ``+=`` ``-=`` ``*=`` ``/=`` ``%=`` ``&=`` ``|=``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:298 msgid "Assignment (lowest priority)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:302 msgid "Literals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:300 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:305 msgid "**Literal**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:300 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:305 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:242 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:264 msgid "**Type**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:302 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:307 msgid "``45``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:302 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:307 msgid "Base 10 integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:304 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:309 msgid "``0x8F51``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:304 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:309 msgid "Base 16 (hexadecimal) integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:306 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:311 msgid "``0b101010``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:306 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:311 msgid "Base 2 (binary) integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:308 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:313 msgid "``3.14``, ``58.1e-10``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:308 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:313 msgid "Floating-point number (real)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:310 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:315 msgid "``\"Hello\"``, ``\"Hi\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:310 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:315 msgid "Strings" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:312 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:317 msgid "``\"\"\"Hello\"\"\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:312 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:317 msgid "Multiline string" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:314 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:319 msgid "``@\"Node/Label\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:314 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:319 msgid ":ref:`class_NodePath` or StringName" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:316 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:321 msgid "``$NodePath``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:316 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:321 msgid "Shorthand for ``get_node(\"NodePath\")``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:320 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:325 msgid "Comments" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:322 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:327 msgid "" "Anything from a ``#`` to the end of the line is ignored and is considered a " "comment." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:332 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:337 msgid "Built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:334 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:339 msgid "" "Built-in types are stack-allocated. They are passed as values. This means a " "copy is created on each assignment or when passing them as arguments to " @@ -10861,48 +10894,48 @@ msgid "" "``PoolByteArray`` are still passed as values.)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:341 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:346 msgid "Basic built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:343 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:348 msgid "A variable in GDScript can be assigned to several built-in types." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:346 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:351 #: ../../docs/tutorials/misc/binary_serialization_api.rst:25 msgid "null" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:348 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:353 msgid "" "``null`` is an empty data type that contains no information and can not be " "assigned any other value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:352 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:357 msgid ":ref:`bool `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:354 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:359 msgid "Short for \"boolean\", it can only contain ``true`` or ``false``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:357 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:362 msgid ":ref:`int `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:359 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:364 msgid "" "Short for \"integer\", it stores whole numbers (positive and negative). It " "is stored as a 64-bit value, equivalent to \"int64_t\" in C++." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:363 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:368 msgid ":ref:`float `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:365 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:370 msgid "" "Stores real numbers, including decimals, using floating-point values. It is " "stored as a 64-bit value, equivalent to \"double\" in C++. Note: Currently, " @@ -10910,11 +10943,11 @@ msgid "" "single-precision \"float\" values." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:371 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 msgid ":ref:`String `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:373 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 msgid "" "A sequence of characters in `Unicode format `_. Strings can contain `standard C escape sequences `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:389 msgid "" "2D vector type containing ``x`` and ``y`` fields. Can also be accessed as an " "array." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:393 msgid ":ref:`Rect2 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:395 msgid "" "2D Rectangle type containing two vectors fields: ``position`` and ``size``. " "Also contains an ``end`` field which is ``position + size``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:394 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:399 msgid ":ref:`Vector3 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:396 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:401 msgid "" "3D vector type containing ``x``, ``y`` and ``z`` fields. This can also be " "accessed as an array." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:400 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:405 msgid ":ref:`Transform2D `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:407 msgid "3×2 matrix used for 2D transforms." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:405 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:410 msgid ":ref:`Plane `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:407 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:412 msgid "" "3D Plane type in normalized form that contains a ``normal`` vector field and " "a ``d`` scalar distance." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:411 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:416 msgid ":ref:`Quat `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:413 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:418 msgid "" "Quaternion is a datatype used for representing a 3D rotation. It's useful " "for interpolating rotations." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:417 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:422 msgid ":ref:`AABB `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:419 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:424 msgid "" "Axis-aligned bounding box (or 3D box) contains 2 vectors fields: " "``position`` and ``size``. Also contains an ``end`` field which is " "``position + size``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:424 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:429 msgid ":ref:`Basis `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:426 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:431 msgid "" "3x3 matrix used for 3D rotation and scale. It contains 3 vector fields " "(``x``, ``y`` and ``z``) and can also be accessed as an array of 3D vectors." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:431 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:436 msgid ":ref:`Transform `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:433 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:438 msgid "" "3D Transform contains a Basis field ``basis`` and a Vector3 field ``origin``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:437 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:442 msgid "Engine built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:440 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:445 msgid ":ref:`Color `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:442 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:447 msgid "" "Color data type contains ``r``, ``g``, ``b``, and ``a`` fields. It can also " "be accessed as ``h``, ``s``, and ``v`` for hue/saturation/value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:446 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:451 msgid ":ref:`NodePath `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:448 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:453 msgid "" "Compiled path to a node used mainly in the scene system. It can be easily " "assigned to, and from, a String." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:452 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:457 msgid ":ref:`RID `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:454 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:459 msgid "Resource ID (RID). Servers use generic RIDs to reference opaque data." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:457 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:462 msgid ":ref:`Object `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:459 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:464 msgid "Base class for anything that is not a built-in type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:462 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:467 msgid "Container built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:465 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:470 msgid ":ref:`Array `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:467 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:472 msgid "" "Generic sequence of arbitrary object types, including other arrays or " "dictionaries (see below). The array can resize dynamically. Arrays are " "indexed starting from index ``0``. Negative indices count from the end." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:481 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:486 msgid "" "GDScript arrays are allocated linearly in memory for speed. Large arrays " "(more than tens of thousands of elements) may however cause memory " @@ -11079,51 +11112,51 @@ msgid "" "They are therefore only recommended to use for large data sets:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:488 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:493 msgid "" ":ref:`PoolByteArray `: An array of bytes (integers from " "0 to 255)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:489 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:494 msgid ":ref:`PoolIntArray `: An array of integers." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:490 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:495 msgid ":ref:`PoolRealArray `: An array of floats." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:491 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:496 msgid ":ref:`PoolStringArray `: An array of strings." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:492 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:497 msgid "" ":ref:`PoolVector2Array `: An array of :ref:`Vector2 " "` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:493 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:498 msgid "" ":ref:`PoolVector3Array `: An array of :ref:`Vector3 " "` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:494 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:499 msgid "" ":ref:`PoolColorArray `: An array of :ref:`Color " "` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:497 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:502 msgid ":ref:`Dictionary `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:499 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:504 msgid "Associative container which contains values referenced by unique keys." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:512 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:517 msgid "" "Lua-style table syntax is also supported. Lua-style uses ``=`` instead of ``:" "`` and doesn't use quotes to mark string keys (making for slightly less to " @@ -11131,18 +11164,18 @@ msgid "" "form cannot start with a digit." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:526 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:531 msgid "" "To add a key to an existing dictionary, access it like an existing key and " "assign to it::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:535 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:540 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:228 msgid "Data" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:538 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:543 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:131 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:86 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:148 @@ -11150,159 +11183,159 @@ msgstr "" msgid "Variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:540 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:545 msgid "" "Variables can exist as class members or local to functions. They are created " "with the ``var`` keyword and may, optionally, be assigned a value upon " "initialization." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:551 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:556 msgid "" "Variables can optionally have a type specification. When a type is " "specified, the variable will be forced to have always that same type, and " "trying to assign an incompatible value will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:555 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:560 msgid "" "Types are specified in the variable declaration using a ``:`` (colon) symbol " "after the variable name, followed by the type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:563 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:568 msgid "" "If the variable is initialized within the declaration, the type can be " "inferred, so it's possible to omit the type name::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:569 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:574 msgid "" "Type inference is only possible if the assigned value has a defined type, " "otherwise it will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:572 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:577 #: ../../docs/tutorials/shading/shading_reference/shaders.rst:39 msgid "Valid types are:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:574 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:579 msgid "Built-in types (Array, Vector2, int, String, etc.)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:575 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:580 msgid "Engine classes (Node, Resource, Reference, etc.)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:576 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:581 msgid "" "Constant names if they contain a script resource (``MyScript`` if you " "declared ``const MyScript = preload(\"res://my_script.gd\")``)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:577 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:582 msgid "" "Other classes in the same script, respecting scope (``InnerClass." "NestedClass`` if you declared ``class NestedClass`` inside the ``class " "InnerClass`` in the same scope)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:578 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:583 msgid "Script classes declared with the ``class_name`` keyword." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:581 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:586 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:85 msgid "Casting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:583 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:588 msgid "" "Values assigned to typed variables must have a compatible type. If it's " "needed to coerce a value to be of a certain type, in particular for object " "types, you can use the casting operator ``as``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:587 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:592 msgid "" "Casting between object types results in the same object if the value is of " "the same type or a subtype of the cast type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:595 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:600 msgid "" "If the value is not a subtype, the casting operation will result in a " "``null`` value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:602 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:607 msgid "" "For built-in types, they will be forcibly converted if possible, otherwise " "the engine will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:611 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:616 msgid "" "Casting is also useful to have better type-safe variables when interacting " "with the scene tree::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:621 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:626 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:211 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:22 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:252 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:256 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:71 #: ../../docs/development/cpp/object_class.rst:94 msgid "Constants" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:623 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:628 msgid "" "Constants are similar to variables, but must be constants or constant " "expressions and must be assigned on initialization." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:637 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:642 msgid "" "Although the type of constants is inferred from the assigned value, it's " "also possible to add explicit type specification::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:643 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:648 msgid "Assigning a value of an incompatible type will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:646 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:651 msgid "Enums" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:648 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:653 msgid "" "Enums are basically a shorthand for constants, and are pretty useful if you " "want to assign consecutive integers to some constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:651 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:656 msgid "" "If you pass a name to the enum, it will put all the keys inside a constant " "dictionary of that name." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:654 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:659 msgid "" "In Godot 3.1 and later, keys in a named enum are not registered as global " "constants. They should be accessed prefixed by the enum's name (``Name." "KEY``); see an example below." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:674 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:679 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:391 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:374 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:446 msgid "Functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:676 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:681 msgid "" "Functions always belong to a `class `_. The scope priority for " "variable look-up is: local → class member → global. The ``self`` variable is " @@ -11311,30 +11344,30 @@ msgid "" "argument, unlike Python)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:689 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:694 msgid "" "A function can ``return`` at any point. The default return value is ``null``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:691 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:696 msgid "" "Functions can also have type specification for the arguments and for the " "return value. Types for arguments can be added in a similar way to " "variables::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:697 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:702 msgid "" "If a function argument has a default value, it's possible to infer the type::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:702 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:707 msgid "" "The return type of the function can be specified after the arguments list " "using the arrow token (``->``)::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:708 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:713 msgid "" "Functions that have a return type **must** return a proper value. Setting " "the type as ``void`` means the function doesn't return anything. Void " @@ -11342,7 +11375,7 @@ msgid "" "return any value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:717 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:722 msgid "" "Non-void functions must **always** return a value, so if your code has " "branching statements (such as an ``if``/``else`` construct), all the " @@ -11351,11 +11384,11 @@ msgid "" "block is not executed, the function won't have a valid value to return." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:725 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:730 msgid "Referencing functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:727 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:732 msgid "" "Contrary to Python, functions are *not* first-class objects in GDScript. " "This means they cannot be stored in variables, passed as an argument to " @@ -11363,40 +11396,40 @@ msgid "" "performance reasons." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:731 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:736 msgid "" "To reference a function by name at run-time, (e.g. to store it in a " "variable, or pass it to another function as an argument) one must use the " "``call`` or ``funcref`` helpers::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:745 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:750 msgid "Static functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:747 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:752 msgid "" "A function can be declared static. When a function is static, it has no " "access to the instance member variables or ``self``. This is mainly useful " "to make libraries of helper functions::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:756 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:761 msgid "Statements and control flow" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:758 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:763 msgid "" "Statements are standard and can be assignments, function calls, control flow " "structures, etc (see below). ``;`` as a statement separator is entirely " "optional." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:763 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:768 msgid "if/else/elif" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:765 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:770 msgid "" "Simple conditions are created by using the ``if``/``else``/``elif`` syntax. " "Parenthesis around conditions are allowed, but not required. Given the " @@ -11404,23 +11437,23 @@ msgid "" "``else``/``if`` to maintain a level of indentation." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:779 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:784 msgid "Short statements can be written on the same line as the condition::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:786 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:791 msgid "" "Sometimes, you might want to assign a different initial value based on a " "boolean expression. In this case, ternary-if expressions come in handy::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:795 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:800 msgid "" "Simple loops are created by using ``while`` syntax. Loops can be broken " "using ``break`` or continued using ``continue``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:806 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:811 msgid "" "To iterate through a range, such as an array or table, a *for* loop is used. " "When iterating over an array, the current array element is stored in the " @@ -11428,44 +11461,44 @@ msgid "" "the loop variable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:841 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:846 msgid "" "A ``match`` statement is used to branch execution of a program. It's the " "equivalent of the ``switch`` statement found in many other languages, but " "offers some additional features." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:844 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:849 msgid "Basic syntax::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:855 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:860 msgid "**Crash-course for people who are familiar with switch statements**:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:857 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:862 msgid "Replace ``switch`` with ``match``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:858 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:863 msgid "Remove ``case``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:859 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:864 msgid "" "Remove any ``break``\\ s. If you don't want to ``break`` by default, you can " "use ``continue`` for a fallthrough." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:860 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:865 msgid "Change ``default`` to a single underscore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:863 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:868 msgid "**Control flow**:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:865 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:870 msgid "" "The patterns are matched from top to bottom. If a pattern matches, the " "corresponding block will be executed. After that, the execution continues " @@ -11474,134 +11507,134 @@ msgid "" "below it." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:869 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:874 msgid "There are 6 pattern types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:881 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:886 msgid "Constant pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:872 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:877 msgid "Constant primitives, like numbers and strings::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:893 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:898 msgid "Variable pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:884 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:889 msgid "Matches the contents of a variable/enum::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:907 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:912 msgid "Wildcard pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:896 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:901 msgid "This pattern matches everything. It's written as a single underscore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:898 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:903 msgid "" "It can be used as the equivalent of the ``default`` in a ``switch`` " "statement in other languages::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:920 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:925 msgid "Binding pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:910 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:915 msgid "" "A binding pattern introduces a new variable. Like the wildcard pattern, it " "matches everything - and also gives that value a name. It's especially " "useful in array and dictionary patterns::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:941 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:946 msgid "Array pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:923 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:928 msgid "" "Matches an array. Every single element of the array pattern is a pattern " "itself, so you can nest them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:925 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:930 msgid "" "The length of the array is tested first, it has to be the same size as the " "pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:927 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:932 msgid "" "**Open-ended array**: An array can be bigger than the pattern by making the " "last subpattern ``..``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:929 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:934 msgid "Every subpattern has to be comma-separated." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:968 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:973 msgid "Dictionary pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:944 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:949 msgid "" "Works in the same way as the array pattern. Every key has to be a constant " "pattern." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:946 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:951 msgid "" "The size of the dictionary is tested first, it has to be the same size as " "the pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:948 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:953 msgid "" "**Open-ended dictionary**: A dictionary can be bigger than the pattern by " "making the last subpattern ``..``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:950 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:955 msgid "Every subpattern has to be comma separated." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:952 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:957 msgid "" "If you don't specify a value, then only the existence of the key is checked." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:954 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:959 msgid "A value pattern is separated from the key pattern with a ``:``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:981 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:986 msgid "Multiple patterns" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:971 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:976 msgid "" "You can also specify multiple patterns separated by a comma. These patterns " "aren't allowed to have any bindings in them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:984 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:989 msgid "Classes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:986 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:991 msgid "" "By default, all script files are unnamed classes. In this case, you can only " "reference them using the file's path, using either a relative or an absolute " "path. For example, if you name a script file ``character.gd``::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:999 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1004 msgid "" "Instead, you can give your class a name to register it as a new type in " "Godot's editor. For that, you use the ``class_name`` keyword. You can add an " @@ -11609,11 +11642,11 @@ msgid "" "class will then appear with its new icon in the editor::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1012 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1017 msgid "Here's a class file example:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1031 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1036 msgid "" "Godot's class syntax is compact: it can only contain member variables or " "functions. You can use static functions, but not static member variables. In " @@ -11623,47 +11656,47 @@ msgid "" "without the user knowing." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1039 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1044 msgid "Inheritance" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1041 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1046 msgid "A class (stored as a file) can inherit from:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1043 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1048 msgid "A global class." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1044 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1049 msgid "Another class file." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1045 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1050 msgid "An inner class inside another class file." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1047 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1052 msgid "Multiple inheritance is not allowed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1049 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1054 msgid "Inheritance uses the ``extends`` keyword::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1061 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1066 msgid "" "To check if a given instance inherits from a given class, the ``is`` keyword " "can be used::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1073 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1078 msgid "" "To call a function in a *parent class* (i.e. one ``extend``-ed in your " "current class), prepend ``.`` to the function name::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1078 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1083 msgid "" "This is especially useful because functions in extending classes replace " "functions with the same name in their parent classes. If you still want to " @@ -11671,7 +11704,7 @@ msgid "" "other languages)::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1086 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1091 msgid "" "Default functions like ``_init``, and most notifications such as " "``_enter_tree``, ``_exit_tree``, ``_process``, ``_physics_process``, etc. " @@ -11679,11 +11712,11 @@ msgid "" "them explicitly when overloading them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1093 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1098 msgid "Class Constructor" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1095 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1100 msgid "" "The class constructor, called on class instantiation, is named ``_init``. As " "mentioned earlier, the constructors of parent classes are called " @@ -11691,22 +11724,22 @@ msgid "" "``._init()`` explicitly." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1100 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1105 msgid "" "Unlike the call of a regular function, like in the above example with ``." "some_func``, if the constructor from the inherited class takes arguments, " "they are passed like this::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1107 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1112 msgid "This is better explained through examples. Consider this scenario::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1127 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1132 msgid "There are a few things to keep in mind here:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1129 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1134 msgid "" "If the inherited class (``State.gd``) defines a ``_init`` constructor that " "takes arguments (``e`` in this case), then the inheriting class (``Idle." @@ -11714,19 +11747,19 @@ msgid "" "``_init`` from ``State.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1132 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1137 msgid "" "``Idle.gd`` can have a different number of arguments than the parent class " "``State.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1133 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1138 msgid "" "In the example above, ``e`` passed to the ``State.gd`` constructor is the " "same ``e`` passed in to ``Idle.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1135 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1140 msgid "" "If ``Idle.gd``'s ``_init`` constructor takes 0 arguments, it still needs to " "pass some value to the ``State.gd`` parent class, even if it does nothing. " @@ -11734,21 +11767,21 @@ msgid "" "constructor as well, not just variables. eg.::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1145 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1150 msgid "Inner classes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1147 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1152 msgid "" "A class file can contain inner classes. Inner classes are defined using the " "``class`` keyword. They are instanced using the ``ClassName.new()`` function." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1169 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1174 msgid "Classes as resources" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1171 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1176 msgid "" "Classes stored as files are treated as :ref:`resources `. " "They must be loaded from disk to access them in other classes. This is done " @@ -11757,33 +11790,33 @@ msgid "" "class object::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1187 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1192 msgid "Exports" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1191 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1196 msgid "" "Documentation about exports has been moved to :ref:`doc_gdscript_exports`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1194 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1199 msgid "Setters/getters" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1196 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1201 msgid "" "It is often useful to know when a class' member variable changes for " "whatever reason. It may also be desired to encapsulate its access in some " "way." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1199 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1204 msgid "" "For this, GDScript provides a *setter/getter* syntax using the ``setget`` " "keyword. It is used directly after a variable definition:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1206 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1211 msgid "" "Whenever the value of ``variable`` is modified by an *external* source (i.e. " "not from local usage in the class), the *setter* function (``setterfunc`` " @@ -11793,28 +11826,28 @@ msgid "" "``return`` the desired value. Below is an example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1220 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1225 msgid "Either of the *setter* or *getter* functions can be omitted::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1227 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1232 msgid "" "Setters and getters are useful when :ref:`exporting variables " "` to the editor in tool scripts or plugins, for " "validating input." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1235 msgid "" "As said, *local* access will *not* trigger the setter and getter. Here is an " "illustration of this:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1247 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1252 msgid "Tool mode" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1249 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1254 msgid "" "By default, scripts don't run inside the editor and only the exported " "properties can be changed. In some cases, it is desired that they do run " @@ -11823,22 +11856,22 @@ msgid "" "top of the file::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1262 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1267 msgid "See :ref:`doc_running_code_in_the_editor` for more information." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1264 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1269 msgid "" "Be cautious when freeing nodes with ``queue_free()`` or ``free()`` in a tool " "script (especially the script's owner itself). As tool scripts run their " "code in the editor, misusing them may lead to crashing the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1270 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1275 msgid "Memory management" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1272 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1277 msgid "" "If a class inherits from :ref:`class_Reference`, then instances will be " "freed when no longer in use. No garbage collector exists, just reference " @@ -11849,20 +11882,20 @@ msgid "" "weak references." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1280 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1285 msgid "" "Alternatively, when not using references, the " "``is_instance_valid(instance)`` can be used to check if an object has been " "freed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1294 msgid "" "Signals are a tool to emit messages from an object that other objects can " "react to. To create custom signals for a class, use the ``signal`` keyword." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1301 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1306 msgid "" "Signals are a `Callback `_ mechanism. They also fill the role of " @@ -11871,31 +11904,31 @@ msgid "" "the Game Programming Patterns ebook." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1308 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1313 msgid "" "You can connect these signals to methods the same way you connect built-in " "signals of nodes like :ref:`class_Button` or :ref:`class_RigidBody`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1311 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1316 msgid "" "In the example below, we connect the ``health_depleted`` signal from a " "``Character`` node to a ``Game`` node. When the ``Character`` node emits the " "signal, the game node's ``_on_Character_health_depleted`` is called::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1324 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1329 msgid "You can emit as many arguments as you want along with a signal." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1326 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1331 msgid "" "Here is an example where this is useful. Let's say we want a life bar on " "screen to react to health changes with an animation, but we want to keep the " "user interface separate from the player in our scene tree." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1330 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1335 msgid "" "In our ``Character.gd`` script, we define a ``health_changed`` signal and " "emit it with :ref:`Object.emit_signal() `, " @@ -11904,32 +11937,32 @@ msgid "" "method::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1370 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1375 msgid "" "To use signals, your class has to extend the ``Object`` class or any type " "extending it like ``Node``, ``KinematicBody``, ``Control``..." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1373 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1378 msgid "" "In the ``Game`` node, we get both the ``Character`` and ``Lifebar`` nodes, " "then connect the character, that emits the signal, to the receiver, the " "``Lifebar`` node in this case." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1387 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1392 msgid "" "This allows the ``Lifebar`` to react to health changes without coupling it " "to the ``Character`` node." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1390 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1395 msgid "" "You can write optional argument names in parentheses after the signal's " "definition::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1396 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1401 msgid "" "These arguments show up in the editor's node dock, and Godot can use them to " "generate callback functions for you. However, you can still emit any number " @@ -11937,7 +11970,7 @@ msgid "" "values." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1407 msgid "" "GDScript can bind an array of values to connections between a signal and a " "method. When the signal is emitted, the callback method receives the bound " @@ -11945,14 +11978,14 @@ msgid "" "will stay the same." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1407 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1412 msgid "" "You can use this array of values to add extra constant information to the " "connection if the emitted signal itself doesn't give you access to all the " "data that you need." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1411 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1416 msgid "" "Building on the example above, let's say we want to display a log of the " "damage taken by each character on the screen, like ``Player1 took 22 damage." @@ -11961,17 +11994,17 @@ msgid "" "can add the character's name in the binds array argument::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1425 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1430 msgid "" "Our ``BattleLog`` node receives each element in the binds array as an extra " "argument::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1437 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1443 msgid "Coroutines with yield" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1439 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1445 msgid "" "GDScript offers support for `coroutines `_ via the :ref:`yield` built-in " @@ -11982,44 +12015,49 @@ msgid "" "becomes invalid. Here is an example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1459 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1479 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1465 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1485 msgid "Will print::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1465 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1471 msgid "" "It is also possible to pass values between ``yield()`` and ``resume()``, for " "example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1486 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1491 +msgid "" +"Remember to save the new function state, when using multiple ``yield``\\s::" +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1505 msgid "Coroutines & signals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1488 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1507 msgid "" "The real strength of using ``yield`` is when combined with signals. " "``yield`` can accept two arguments, an object and a signal. When the signal " "is received, execution will recommence. Here are some examples::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1501 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1520 msgid "" "Coroutines themselves use the ``completed`` signal when they transition into " "an invalid state, for example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1512 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1531 msgid "" "``my_func`` will only continue execution once both buttons have been pressed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1515 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1534 msgid "Onready keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1517 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1536 msgid "" "When using nodes, it's common to desire to keep references to parts of the " "scene in a variable. As scenes are only warranted to be configured when " @@ -12027,7 +12065,7 @@ msgid "" "call to ``Node._ready()`` is made." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1529 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1548 msgid "" "This can get a little cumbersome, especially when nodes and external " "references pile up. For this, GDScript has the ``onready`` keyword, that " @@ -12035,11 +12073,11 @@ msgid "" "can replace the above code with a single line::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1537 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1556 msgid "Assert keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1539 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1558 msgid "" "The ``assert`` keyword can be used to check conditions in debug builds. " "These assertions are ignored in non-debug builds. This means that the " @@ -12049,7 +12087,7 @@ msgid "" "depending on whether the project is run in a debug build." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1551 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1570 msgid "" "When running a project from the editor, the project will be paused if an " "assertion error occurs." @@ -12224,7 +12262,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:174 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:191 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:195 msgid "Arrays" msgstr "" @@ -12295,11 +12333,11 @@ msgid "" "and quick structs:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:318 +#: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:319 msgid "For & while" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:320 +#: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:321 msgid "Iterating in some statically typed languages can be quite complex:" msgstr "" @@ -12484,6 +12522,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:33 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:184 #: ../../docs/tutorials/physics/using_area_2d.rst:132 #: ../../docs/tutorials/physics/using_kinematic_body_2d.rst:157 #: ../../docs/development/compiling/compiling_with_mono.rst:120 @@ -12762,9 +12801,9 @@ msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:363 msgid "" -"In the script editor, to toggle the selected code commented, press " -"Ctrl K. This feature adds a single # sign at the start " -"of the selected lines." +"In the script editor, to toggle the selected code commented, press :kbd:" +"`Ctrl + K`. This feature adds a single # sign at the start of the selected " +"lines." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:368 @@ -13068,7 +13107,7 @@ msgid "" "method. With types, you can enforce this:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:48 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:49 msgid "" "Another significant advantage of typed GDScript is the new **warning " "system**. From version 3.1, Godot gives you warnings about your code as you " @@ -13077,33 +13116,33 @@ msgid "" "code as it is. More on that in a moment." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:54 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:55 msgid "" "Static types also give you better code completion options. Below, you can " "see the difference between a dynamic and a static typed completion options " "for a class called ``PlayerController``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:58 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:59 msgid "" "You’ve probably stored a node in a variable before, and typed a dot to be " "left with no autocomplete suggestions:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:64 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:65 msgid "" "This is due to dynamic code. Godot cannot know what node or value type " "you’re passing to the function. If you write the type explicitly however, " "you will get all public methods and variables from the node:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:71 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:72 msgid "" "In the future, typed GDScript will also increase code performance: Just-In-" "Time compilation and other compiler improvements are already on the roadmap!" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:75 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:76 msgid "" "Overall, typed programming gives you a more structured experience. It helps " "prevent errors and improves the self-documenting aspect of your scripts. " @@ -13114,84 +13153,84 @@ msgid "" "the faster you can move forward." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:84 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:85 msgid "How to use static typing" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:86 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:87 msgid "" "To define the type of a variable or a constant, write a colon after the " "variable’s name, followed by its type. E.g. ``var health: int``. This forces " "the variable's type to always stay the same:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:95 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:96 msgid "" "Godot will try to infer types if you write a colon, but you omit the type:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:104 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:105 msgid "Currently you can use three types of… types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:106 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:107 msgid ":ref:`Built-in `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:107 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:108 msgid "" "Core classes and nodes (``Object``, ``Node``, ``Area2D``, ``Camera2D``, etc.)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:109 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:110 msgid "" "Your own, custom classes. Look at the new :ref:`class_name " "` feature to register types in the " "editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:114 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:115 msgid "" "You don't need to write type hints for constants, as Godot sets it " "automatically from the assigned value. But you can still do so to make the " "intent of your code clearer." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:117 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:118 msgid "Custom variable types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:119 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:120 msgid "" "You can use any class, including your custom classes, as types. There are " "two ways to use them in scripts. The first method is to preload the script " "you want to use as a type in a constant:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:128 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:129 msgid "" "The second method is to use the ``class_name`` keyword when you create. For " "the example above, your Rifle.gd would look like this:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:136 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:137 msgid "" "If you use ``class_name``, Godot registers the Rifle type globally in the " "editor, and you can use it anywhere, without having to preload it into a " "constant:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:145 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:146 msgid "Variable casting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:147 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:148 msgid "" "Type casting is a key concept in typed languages. Casting is the conversion " "of a value from one type to another." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:150 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:151 msgid "" "Imagine an Enemy in your game, that ``extends Area2D``. You want it to " "collide with the Player, a ``KinematicBody2D`` with a script called " @@ -13201,7 +13240,7 @@ msgid "" "``_on_body_entered`` callback." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:157 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:158 msgid "" "You can check if this ``PhysicsBody2D`` is your Player with the ``as`` " "casting keyword, and using the colon ``:`` again to force the variable to " @@ -13209,7 +13248,7 @@ msgid "" "type:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:170 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:172 msgid "" "As we’re dealing with a custom type, if the ``body`` doesn’t extend " "``PlayerController``, the ``player``\\ variable will be set to ``null``. We " @@ -13217,17 +13256,17 @@ msgid "" "full autocompletion on the player variable thanks to that cast." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:177 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:179 msgid "" "If you try to cast with a built-in type and it fails, Godot will throw an " "error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:180 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:182 msgid "Safe lines" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:182 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:184 msgid "" "You can also use casting to ensure safe lines. Safe lines are a new tool in " "Godot 3.1 to tell you when ambiguous lines of code are type-safe. As you can " @@ -13236,7 +13275,7 @@ msgid "" "runtime." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:188 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:190 msgid "" "This happens when you get a child node. Let’s take a timer for example: with " "dynamic code, you can get the node with ``$Timer``. GDScript supports `duck-" @@ -13246,7 +13285,7 @@ msgid "" "node’s type as long as it has the methods you need to call." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:196 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:198 msgid "" "You can use casting to tell Godot the type you expect when you get a node: " "``($Timer as Timer)``, ``($Player as KinematicBody2D)``, etc. Godot will " @@ -13254,40 +13293,40 @@ msgid "" "of the script editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:204 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:206 msgid "Safe vs Unsafe Line" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:208 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:210 msgid "" "You can turn off safe lines or change their color in the editor settings." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:211 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:213 msgid "Define the return type of a function with the arrow ->" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:213 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:215 msgid "" "To define the return type of a function, write a dash and a right angle " "bracket ``->`` after its declaration, followed by the return type:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:221 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:223 msgid "" "The type ``void`` means the function does not return anything. You can use " "any type, as with variables:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:230 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:232 msgid "You can also use your own nodes as return types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:245 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:248 msgid "Typed or dynamic: stick to one style" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:247 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:250 msgid "" "Typed GDScript and dynamic GDScript can coexist in the same project. But I " "recommended to stick to either style for consistency in your codebase, and " @@ -13295,35 +13334,35 @@ msgid "" "same guidelines, and faster to read and understand other people’s code." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:253 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:256 msgid "" "Typed code takes a little more writing, but you get the benefits we " "discussed above. Here’s an example of the same, empty script, in a dynamic " "style:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:265 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:272 msgid "And with static typing:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:275 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:286 msgid "" "As you can see, you can also use types with the engine’s virtual methods. " "Signal callbacks, like any methods, can also use types. Here’s a " "``body_entered`` signal in a dynamic style:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:284 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:295 msgid "And the same callback, with type hints:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:291 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:302 msgid "" "You’re free to replace, e.g. the ``CollisionObject2D``, with your own type, " "to cast parameters automatically:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:301 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:313 msgid "" "The ``bullet`` variable could hold any ``CollisionObject2D`` here, but we " "make sure it is our ``Bullet``, a node we created for our project. If it’s " @@ -13331,38 +13370,38 @@ msgid "" "``Bullet``, the ``bullet`` variable will be ``null``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:307 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:319 msgid "Warning system" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:309 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:321 msgid "" "The warning system complements typed GDScript. It’s here to help you avoid " "mistakes that are hard to spot during development, and that may lead to " "runtime errors." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:313 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:325 msgid "" "You can configure warnings in the Project Settings under a new section " "called ``GDScript``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:319 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:331 msgid "warning system project settings" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:321 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:333 msgid "" "You can find a list of warnings for the active GDScript file in the script " "editor’s status bar. The example below has 3 warnings:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:327 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:339 msgid "warning system example" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:329 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:341 msgid "" "To ignore specific warnings in one file, insert a special comment of the " "form ``# warning-ignore:warning-id``, or click on the ignore link to the " @@ -13371,18 +13410,18 @@ msgid "" "anymore:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:338 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:350 msgid "warning system ignore example" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:340 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:352 msgid "" "You can also choose to ignore not just one but all warnings of a certain " "type in this file with ``# warning-ignore-all:warning-id``. To ignore all " "warnings of all types in a file add the comment ``# warnings-disable`` to it." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:344 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:356 msgid "" "Warnings won’t prevent the game from running, but you can turn them into " "errors if you’d like. This way your game won’t compile unless you fix all " @@ -13391,49 +13430,49 @@ msgid "" "as errors turned on:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:353 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:365 msgid "warnings as errors" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:356 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:368 msgid "Cases where you can’t specify types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:358 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:370 msgid "" "To wrap up this introduction, let’s cover a few cases where you can’t use " "type hints. All the examples below **will trigger errors**." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:361 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:373 msgid "You can’t use Enums as types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:368 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:380 msgid "" "You can’t specify the type of individual members in an array. This will give " "you an error:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:375 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:387 msgid "" "You can’t force the assignment of types in a ``for`` loop, as each element " "the ``for`` keyword loops over already has a different type. So you " "**cannot** write:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:385 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:397 msgid "Two scripts can’t depend on each other in a cyclic fashion:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:404 -#: ../../docs/getting_started/workflow/export/exporting_pcks.rst:124 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:420 +#: ../../docs/getting_started/workflow/export/exporting_pcks.rst:129 #: ../../docs/tutorials/2d/2d_movement.rst:347 -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:179 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:213 msgid "Summary" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:406 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:422 msgid "" "Typed GDScript is a powerful tool. Available as of version 3.1 of Godot, it " "helps you write more structured code, avoid common errors, and create " @@ -14311,8 +14350,8 @@ msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:122 msgid "" -"If instead reading this value is desired, drag the node again but hold the " -"*Control* key (or Command on Mac). This will create a getter:" +"If instead reading this value is desired, drag the node again but hold :kbd:" +"`Ctrl` (or :kbd:`Cmd` on macOS). This will create a getter:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:127 @@ -14352,7 +14391,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:158 -msgid "Likewise, hold *Control* (*Command* on Mac) to drop a setter:" +msgid "Likewise, hold :kbd:`Ctrl` (or :kbd:`Cmd` on macOS) to drop a setter:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:166 @@ -14397,7 +14436,9 @@ msgid "" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:198 -msgid "Ctrl-F (Command-F on Mac) allows you to search the list." +msgid "" +"Pressing :kbd:`Ctrl + F` (or :kbd:`Cmd + F` on macOS) allows you to search " +"the list." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:200 @@ -15176,36 +15217,44 @@ msgid "" "csproj`` file located in the project root:" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:260 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:262 msgid "" -"Whenever packages are added or modified, run ``nuget restore`` in the root " -"of the project directory. To ensure that NuGet packages will be available " -"for msbuild to use, run:" +"By default, tools like NuGet put ``Version`` as an attribute of the " +"```PackageReference``` Node. **You must manually create a Version node as " +"shown above.** This is because the version of MSBuild used requires this. " +"(This will be fixed in Godot 4.0.)" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:269 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:264 +msgid "" +"Whenever packages are added or modified, run ``nuget restore`` (*not* " +"``dotnet restore``) in the root of the project directory. To ensure that " +"NuGet packages will be available for msbuild to use, run:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:273 msgid "Profiling your C# code" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:271 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:275 msgid "" "`Mono log profiler `_ is available via `this PR `_." +"profiler/>`_ is available for Linux and macOS. Due to a Mono change, it does " +"not work on Windows currently." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:272 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:276 msgid "" "External Mono profiler like `JetBrains dotTrace `_ can be used as described `here `_." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:275 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:279 msgid "Configuring VS 2019 for debugging" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:279 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:283 msgid "" "Godot has built-in support for workflows involving several popular C# IDEs. " "Built-in support for Visual Studio will be including in future versions, but " @@ -15213,56 +15262,56 @@ msgid "" "Godot C# projects." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:284 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:288 msgid "" "Install VS 2019 with ``.NET desktop development`` and ``Desktop development " "with C++`` workloads selected." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:285 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:289 msgid "" "**Ensure that you do not have Xamarin installed.** Do not choose the " "``Mobile development with .NET`` workload. Xamarin changes the DLLs used by " "MonoDebugger, which breaks debugging." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:286 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:290 msgid "" "Install the `VSMonoDebugger extension `_." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:287 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:291 msgid "In VS 2019 --> Extensions --> Mono --> Settings:" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:289 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:293 msgid "Select ``Debug/Deploy to local Windows``." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:290 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:294 msgid "Leave ``Local Deploy Path`` blank." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:291 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:295 msgid "" "Set the ``Mono Debug Port`` to the port in Godot --> Project --> Project " "Settings --> Mono --> Debugger Agent." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:292 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:296 msgid "" "Also select ``Wait for Debugger`` in the Godot Mono options. `This Godot " "Addon `_ may be helpful." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:294 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:298 msgid "" "Run the game in Godot. It should hang at the Godot splash screen while it " "waits for your debugger to attach." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:295 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:299 msgid "" "In VS 2019, open your project and choose Extensions --> Mono --> Attach to " "Mono Debugger." @@ -15414,6 +15463,86 @@ msgid "" "or ``EmitSignal``)." msgstr "" +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:174 +msgid "Preprocessor defines" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:176 +msgid "" +"Godot has a set of defines that allow you to change your C# code depending " +"on the environment you are compiling to." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:179 +msgid "" +"If you created your project before Godot 3.2, you have to modify or " +"regenerate your `csproj` file to use this feature (compare " +"```` with a new 3.2+ project)." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:186 +msgid "For example, you can change code based on the platform:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:203 +msgid "" +"Or you can detect which engine your code is in, useful for making cross-" +"engine libraries:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:219 +msgid "Full list of defines" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:221 +msgid "``GODOT`` is always defined for Godot projects." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:223 +msgid "" +"One of ``GODOT_64`` or ``GODOT_32`` is defined depending on if the " +"architecture is 64-bit or 32-bit." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:225 +msgid "" +"One of ``GODOT_X11``, ``GODOT_WINDOWS``, ``GODOT_OSX``, ``GODOT_ANDROID``, " +"``GODOT_HTML5``, or ``GODOT_SERVER`` depending on the OS. These names may " +"change in the future. These are created from the ``get_name()`` method of " +"the :ref:``OS `` singleton, but not every possible OS the method " +"returns is an OS that Godot with Mono runs on." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:230 +msgid "" +"When **exporting**, the following may also be defined depending on the " +"export features:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:232 +msgid "" +"One of ``GODOT_PC``, ``GODOT_MOBILE``, or ``GODOT_WEB`` depending on the " +"platform type." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:234 +msgid "" +"One of ``GODOT_ARM64_V8A`` or ``GODOT_ARMEABI_V7A`` on Android only " +"depending on the architecture." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:236 +msgid "" +"One of ``GODOT_S3TC``, ``GODOT_ETC``, or ``GODOT_ETC2`` depending on the " +"texture compression type." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:238 +msgid "" +"Any custom features added in the export menu will be capitalized and " +"prefixed: ``foo`` -> ``GODOT_FOO``." +msgstr "" + #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:4 msgid "API differences to GDScript" msgstr "" @@ -15546,7 +15675,6 @@ msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:143 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:155 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:313 -#: ../../docs/tutorials/math/matrices_and_transforms.rst:467 #: ../../docs/tutorials/io/background_loading.rst:268 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:90 #: ../../docs/tutorials/platform/services_for_ios.rst:205 @@ -15642,8 +15770,6 @@ msgid "" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:190 -#: ../../docs/tutorials/math/matrices_and_transforms.rst:126 -#: ../../docs/tutorials/math/matrices_and_transforms.rst:614 msgid "Basis" msgstr "" @@ -15670,7 +15796,6 @@ msgid "``Scale``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:205 -#: ../../docs/tutorials/math/matrices_and_transforms.rst:157 msgid "Transform2D" msgstr "" @@ -17827,50 +17952,68 @@ msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:40 msgid "" "To complete the picture and allow efficient support for translations, Godot " -"has a special importer that can read CSV files. All spreadsheet editors (be " -"it Libreoffice, Microsoft Office, Google Docs, etc.) can export to this " -"format, so the only requirement is that the files have a special " -"arrangement. The CSV files must be saved in UTF-8 encoding and be formatted " -"as follows:" +"has a special importer that can read CSV files. Most spreadsheet editors can " +"export to this format, so the only requirement is that the files have a " +"special arrangement. The CSV files **must** be saved with UTF-8 encoding " +"without a `byte order mark `__." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 +msgid "" +"By default, Microsoft Excel will always save CSV files with ANSI encoding " +"rather than UTF-8. There is no built-in way to do this, but there are " +"workarounds as described `here `__." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:53 +msgid "" +"We recommend using `LibreOffice `__ or Google " +"Sheets instead." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:55 +msgid "CSV files must be formatted as follows:" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:58 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:77 msgid "keys" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:58 msgid "" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:58 msgid "" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:58 msgid "" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:50 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:60 msgid "KEY1" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:50 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:52 -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:54 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:60 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:62 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:64 #: ../../docs/tutorials/misc/binary_serialization_api.rst:33 msgid "string" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:52 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:62 msgid "KEY2" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:54 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:64 msgid "KEYN" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:57 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 msgid "" "The \"lang\" tags must represent a language, which must be one of the :ref:" "`valid locales ` supported by the engine. The \"KEY\" tags must " @@ -17881,86 +18024,86 @@ msgid "" "left empty or having any content. Here's an example:" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:77 #: ../../docs/tutorials/i18n/locales.rst:178 msgid "en" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:77 #: ../../docs/tutorials/i18n/locales.rst:220 msgid "es" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:77 #: ../../docs/tutorials/i18n/locales.rst:372 msgid "ja" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:79 msgid "GREET" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:79 msgid "Hello, friend!" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:79 msgid "Hola, amigo!" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:79 msgid "こんにちは" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:71 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:81 msgid "ASK" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:71 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:81 msgid "How are you?" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:71 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:81 msgid "Cómo está?" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:71 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:81 msgid "元気ですか" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:73 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:83 msgid "BYE" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:73 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:83 msgid "Goodbye" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:73 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:83 msgid "Adiós" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:73 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:83 msgid "さようなら" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:75 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:85 msgid "QUOTE" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:75 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:85 msgid "\"Hello\" said the man." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:75 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:85 msgid "\"Hola\" dijo el hombre." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:75 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:85 msgid "「こんにちは」男は言いました" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:78 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:88 msgid "" "The same example is shown below as a comma-separated plain text file, which " "should be the result of editing the above in a spreadsheet. When editing the " @@ -17973,32 +18116,32 @@ msgid "" "options." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:97 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:107 msgid "CSV importer" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:99 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:109 msgid "" "Godot will treat CSV files as translations by default. It will import them " "and generate one or more compressed translation resource files next to it." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:102 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:112 msgid "" "Importing will also add the translation to the list of translations to load " "when the game runs, specified in project.godot (or the project settings). " "Godot allows loading and removing translations at runtime as well." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:107 +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:117 msgid "" -"Select the ``.csv`` file and access the \"Import\" dock to define import " +"Select the ``.csv`` file and access the **Import** dock to define import " "options. You can toggle the compression of the imported translations, and " "select the delimiter to use when parsing the CSV file." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_translations.rst:113 -msgid "Be sure to click \"Reimport\" after any change to these options." +#: ../../docs/getting_started/workflow/assets/importing_translations.rst:123 +msgid "Be sure to click **Reimport** after any change to these options." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:4 @@ -19207,7 +19350,14 @@ msgid "" "previously loaded PCK." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_pcks.rst:126 +#: ../../docs/getting_started/workflow/export/exporting_pcks.rst:124 +msgid "" +"For a C# project, you need to build the DLL and place it in the project " +"directory first. Then, before loading the resource pack, you need to load " +"its DLL as follows: ``Assembly.LoadFile(\"mod.dll\")``" +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_pcks.rst:131 msgid "" "This tutorial should illustrate how easy adding mods, patches or DLC to a " "game is. The most important thing is to identify how one plans to distribute " @@ -19567,6 +19717,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:11 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:23 #: ../../docs/tutorials/legal/complying_with_licenses.rst:15 #: ../../docs/development/compiling/compiling_for_windows.rst:9 #: ../../docs/development/compiling/compiling_for_x11.rst:9 @@ -19913,15 +20064,21 @@ msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:12 msgid "" -"Download and install the Android SDK from https://developer.android.com/" -"studio/" +"Download and install the Android SDK from `developer.android.com `__." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:16 -msgid "Install OpenJDK or Oracle JDK" +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:15 +msgid "" +"If you install Android Studio, you need to run it once to complete the SDK " +"setup." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:18 +msgid "Install OpenJDK or Oracle JDK" +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:20 msgid "" "Download and install `OpenJDK `__ " "or `Oracle JDK `__." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:40 msgid "Make sure you have adb" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:38 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:42 msgid "" -"Android Debug Bridge (adb) is the command line tool used to communicate with " -"Android devices. It's installed with the SDK, but you may need to install " -"one (any) of the Android API levels for it to be installed in the SDK " -"directory." +"Android Debug Bridge (``adb``) is the command line tool used to communicate " +"with Android devices. It's installed with the SDK, but you may need to " +"install one (any) of the Android API levels for it to be installed in the " +"SDK directory." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:43 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:47 msgid "Setting it up in Godot" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:45 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:49 msgid "" "Enter the Editor Settings screen. This screen contains the editor settings " "for the user account in the computer (it's independent from the project)." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:51 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:55 msgid "Scroll down to the section where the Android settings are located:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:55 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:59 msgid "In that screen, the path to 3 files needs to be set:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:57 -msgid "The *adb* executable (adb.exe on Windows)" -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:58 -msgid "The *jarsigner* executable (from JDK 6 or 8)" -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:59 -msgid "The debug *keystore*" -msgstr "" - #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:61 -msgid "Once that is configured, everything is ready to export to Android!" +msgid "" +"The ``adb`` executable (``adb.exe`` on Windows) - It can usually be found at " +"``%LOCALAPPDATA%\\Android\\Sdk\\platform-tools\\adb.exe``." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:64 +msgid "" +"The ``jarsigner`` executable (from JDK 6 or 8) - On Windows, OpenJDK " +"installs to a dir like ``%PROGRAMFILES%\\ojdkbuild\\java-1.8.0-" +"openjdk-1.8.0.232-2\\bin``. The exact path may vary depending on the OpenJDK " +"update you've installed." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:67 +msgid "" +"The debug ``.keystore`` file - It can be found in the folder where you put " +"the ``debug.keystore`` file you created above." +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:70 +msgid "Once that is configured, everything is ready to export to Android!" +msgstr "" + +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:73 msgid "Providing launcher icons" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:66 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:75 msgid "" "Launcher icons are used by Android launcher apps to represent your " "application to users. Godot only requires high-resolution icons (for " @@ -20005,17 +20185,17 @@ msgid "" "resolution variants." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:68 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:77 msgid "There are two types of icons required by Godot:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:70 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:79 msgid "" "**Main Icon:**: The \"classic\" icon. This will be used on all Android " "versions up to Android 8 (Oreo), exclusive. Must be at least 192×192 px." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:71 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:80 msgid "" "**Adaptive Icons:** Starting from Android 8 (inclusive), `Adaptive Icons " " Project icon -> Default Godot main icon." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:80 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:89 msgid "" "**Adaptive Icon Foreground:** Provided foreground icon -> Provided main icon " "-> Project icon -> Default Godot foreground icon." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:81 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:90 msgid "" "**Adaptive Icon Background:** Provided background icon -> Default Godot " "background icon." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:83 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:92 msgid "" "It's highly recommended to provide all of the requested icons, and at least " "with the specified resolutions. Only this way your application will look " "great on all the Android devices and versions." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:86 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:95 msgid "Exporting for Google Play Store" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:88 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:97 msgid "" "Uploading an APK to Google's Play Store requires you to sign using a non-" "debug keystore file; such file can be generated like this:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:95 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:104 msgid "" "This keystore and key are used to verify your developer identity, remember " "the password and keep it in a safe place! Use Google's Android Developer " @@ -20088,42 +20268,42 @@ msgid "" "studio/publish/app-signing>`__." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:98 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:107 msgid "Now fill in the following forms in your Android Export Presets:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:102 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:111 msgid "**Release:** Enter the path to the keystore file you just generated." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:103 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:112 msgid "**Release User:** Replace with the key alias." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:104 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:113 msgid "" "**Release Password:** Key password. Note that the keystore password and the " "key password currently have to be the same." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:106 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:115 msgid "" "**Your export_presets.cfg file now contains sensitive information.** If you " "use a version control system, you should remove it from public repositories " "and add it to your ``.gitignore`` file or equivalent." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:110 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:119 msgid "" "Don't forget to uncheck the **Export With Debug** checkbox while choosing " "the APK's name." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:115 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:124 msgid "Optimizing the APK size" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:117 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:126 msgid "" "By default, the APK will contain native libraries for both ARMv7 and ARMv8 " "architectures. This increases its size significantly. To create a smaller " @@ -20133,7 +20313,7 @@ msgid "" "run on ARMv8 devices, but the opposite is not true." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:124 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:133 msgid "" "Since August 2019, Google Play requires all applications to be available in " "64-bit form. This means you cannot upload an APK that contains *just* an " @@ -20144,7 +20324,7 @@ msgid "" "devices in use today." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:131 +#: ../../docs/getting_started/workflow/export/exporting_for_android.rst:140 msgid "" "You can optimize the size further by compiling an Android export template " "with only the features you need. See :ref:`doc_optimizing_for_size` for more " @@ -20732,8 +20912,8 @@ msgstr "" #: ../../docs/getting_started/workflow/export/android_custom_build.rst:117 msgid "" -"This will ask you to accept several licenses, just write ``y`` and press " -"Enter on every of them until it's done." +"This will ask you to accept several licenses, just write ``y`` and press :" +"kbd:`Enter` on every of them until it's done." msgstr "" #: ../../docs/getting_started/workflow/export/android_custom_build.rst:120 @@ -22141,8 +22321,7 @@ msgid "" "Autoload is not exactly a Singleton. Nothing prevents you from instantiating " "copies of an auto-loaded node. It is only a tool that makes a node load " "automatically as a child of the root of your scene tree, regardless of your " -"game's node structure or which scene you run, e.g. by pressing the ``F6`` " -"key." +"game's node structure or which scene you run, e.g. by pressing :kbd:`F6` key." msgstr "" #: ../../docs/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.rst:108 @@ -23548,7 +23727,7 @@ msgstr "" #: ../../docs/tutorials/2d/2d_transforms.rst:63 #: ../../docs/tutorials/io/data_paths.rst:51 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:21 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:513 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:92 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:158 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:218 @@ -23586,8 +23765,6 @@ msgid "Type" msgstr "" #: ../../docs/tutorials/2d/2d_transforms.rst:63 -#: ../../docs/tutorials/math/matrices_and_transforms.rst:342 -#: ../../docs/tutorials/math/matrices_and_transforms.rst:703 msgid "Transform" msgstr "" @@ -23884,7 +24061,7 @@ msgstr "" #: ../../docs/tutorials/2d/using_tilemaps.rst:162 msgid "" -"To draw straight lines, hold while clicking and dragging a tile." +"To draw straight lines, hold :kbd:`Shift` while clicking and dragging a tile." msgstr "" #: ../../docs/tutorials/2d/using_tilemaps.rst:164 @@ -24259,7 +24436,6 @@ msgstr "" #: ../../docs/tutorials/2d/particle_systems_2d.rst:282 #: ../../docs/tutorials/3d/using_multi_mesh_instance.rst:87 -#: ../../docs/tutorials/math/matrices_and_transforms.rst:309 msgid "Scale" msgstr "" @@ -24392,6 +24568,7 @@ msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:22 #: ../../docs/tutorials/animation/2d_skeletons.rst:30 #: ../../docs/tutorials/shading/your_first_shader/your_first_canvasitem_shader.rst:21 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:12 #: ../../docs/development/compiling/introduction_to_the_buildsystem.rst:40 msgid "Setup" msgstr "" @@ -24568,10 +24745,10 @@ msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:28 msgid "" -"The first is the background image (`bg.png `_) " -"used in the demo. You do not necessarily need a background, but we use one " -"for the demo." +"The first is the background image (`background.png `_) used in the demo. You do not " +"necessarily need a background, but we use one for the demo." msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:31 @@ -24731,9 +24908,9 @@ msgstr "" msgid "" "First add a :ref:`Sprite ` and set its texture to the " "`background image `_. For your game this can be " -"any background you choose. For this style of shadow it is most likely to be " -"a floor texture." +"projects/master/2d/lights_and_shadows/background.png>`_. For your game this " +"can be any background you choose. For this style of shadow it is most likely " +"to be a floor texture." msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:118 @@ -25347,23 +25524,26 @@ msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:9 msgid "" -"In this tutorial, you'll learn two different ways to create 2D animated " -"characters. Typically, when you create or download an animated character, it " -"will come in one of two ways: as individual images or as a single sprite " -"sheet containing all the animation's frames. Depending on which type of " -"assets you have, you can choose one of the following solutions." +"In this tutorial, you'll learn how to create 2D animated characters with the " +"AnimatedSprite class and the AnimationPlayer. Typically, when you create or " +"download an animated character, it will come in one of two ways: as " +"individual images or as a single sprite sheet containing all the animation's " +"frames. Both can be animated in Godot with the AnimatedSprite class." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:15 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:14 msgid "" "First, we'll use :ref:`AnimatedSprite ` to animate a " -"collection of individual images. Then, to use a sprite sheet, we'll use :ref:" -"`AnimationPlayer ` along with the *Animation* " +"collection of individual images. Then we will animate a sprite sheet using " +"this class. Finally, we will learn another way to animate a sprite sheet " +"with :ref:`AnimationPlayer ` and the *Animation* " "property of :ref:`Sprite `." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:20 -msgid "Art for the following examples by https://opengameart.org/users/ansimuz" +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:19 +msgid "" +"Art for the following examples by https://opengameart.org/users/ansimuz and " +"by https://opengameart.org/users/tgfcoder" msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:23 @@ -25390,7 +25570,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:39 -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:109 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:143 msgid "" "The root node could also be :ref:`Area2D ` or :ref:" "`RigidBody2D `. The animation will still be made in the " @@ -25444,35 +25624,94 @@ msgid "" msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:90 -msgid "Sprite sheet with AnimationPlayer" +msgid "Sprite sheet with AnimatedSprite" msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:92 msgid "" -"In the event you have a sprite sheet containing all of your animation " -"frames, you can't easily use ``AnimatedSprite``. Instead, you can use a " -"standard :ref:`Sprite ` node to display the texture, and then " -"animate the change from texture to texture with :ref:`AnimationPlayer " -"`." +"You can also easily animate from a sprite sheet with the class " +"``AnimatedSprite``. We will use this public domain sprite sheet:" msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:97 -msgid "Consider this sprite sheet, which contains 6 frames of animation:" +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:96 +msgid "" +"Right-click the image and choose \"Save Image As\" to download it, and then " +"copy the image into your project folder." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:98 +msgid "" +"Set up your scene tree the same way you did previously when using individual " +"images. Select the ``AnimatedSprite`` and in its *SpriteFrames* property, " +"select \"New SpriteFrames\"." msgstr "" #: ../../docs/tutorials/2d/2d_sprite_animation.rst:101 msgid "" +"Click on the new SpriteFrames resource. This time, when the bottom panel " +"appears, select \"Add frames from a Sprite Sheet\"." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:105 +msgid "You will be prompted to open a file. Select your sprite sheet." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:107 +msgid "" +"A new window will open, showing your sprite sheet. The first thing you will " +"need to do is to change the number of vertical and horizontal images in your " +"sprite sheet. In this sprite sheet, we have four images horizontally and " +"two images vertically." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:111 +msgid "" +"Next, select the frames from the sprite sheet that you want to include in " +"your animation. We will select the top four, then click \"Add 4 frames\" to " +"create the animation." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:115 +msgid "" +"You will now see your animation under the list of animations in the bottom " +"panel. Double click on default to change the name of the animation to jump." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:119 +msgid "" +"Finally, check Playing on the AnimatedSprite in the inspector to see your " +"frog jump!" +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:125 +msgid "Sprite sheet with AnimationPlayer" +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:127 +msgid "" +"Another way that you can animate when using a sprite sheet is to use a " +"standard :ref:`Sprite ` node to display the texture, and then " +"animating the change from texture to texture with :ref:`AnimationPlayer " +"`." +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:131 +msgid "Consider this sprite sheet, which contains 6 frames of animation:" +msgstr "" + +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:135 +msgid "" "Right-click the image and choose \"Save Image As\" to download, then copy " "the image into your project folder." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:104 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:138 msgid "" "Our goal is to display these images one after another in a loop. Start by " "setting up your scene tree:" msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:116 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:150 msgid "" "Drag the spritesheet into the Sprite's *Texture* property, and you'll see " "the whole sheet displayed on the screen. To slice it up into individual " @@ -25481,41 +25720,41 @@ msgid "" "vertical frames in your sprite sheet." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:124 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:158 msgid "" "Now try changing the value of the *Frame* property. You'll see that it " "ranges from ``0`` to ``5`` and the image displayed by the Sprite changes " "accordingly. This is the property we'll be animating." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:128 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:162 msgid "" "Select the ``AnimationPlayer`` and click the \"Animation\" button followed " "by \"New\". Name the new animation \"walk\". Set the animation length to " "``0.6`` and click the \"Loop\" button so that our animation will repeat." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:134 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:168 msgid "" "Now select the ``Sprite`` node and click the key icon to add a new track." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:138 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:172 msgid "" "Continue adding frames at each point in the timeline (``0.1`` seconds by " "default), until you have all the frames from 0 to 5. You'll see the frames " "actually appearing in the animation track:" msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:144 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:178 msgid "Press \"Play\" on the animation to see how it looks." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:149 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:183 msgid "Controlling an AnimationPlayer animation" msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:151 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:185 msgid "" "Like with AnimatedSprite, you can control the animation via code using the " "``play()`` and ``stop()`` methods. Again, here is an example to play the " @@ -25523,7 +25762,7 @@ msgid "" "released." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:168 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:202 msgid "" "If updating both an animation and a separate property at once (for example, " "a platformer may update the sprite's ``h_flip``/``v_flip`` properties when a " @@ -25536,13 +25775,14 @@ msgid "" "``advance(0)`` to update the animation immediately." msgstr "" -#: ../../docs/tutorials/2d/2d_sprite_animation.rst:181 +#: ../../docs/tutorials/2d/2d_sprite_animation.rst:215 msgid "" -"These examples illustrate the two most common situations you'll encounter in " -"2D animation. Each has its benefits. Working with ``AnimationPlayer`` is a " -"bit more complex, but provides additional functionality, since you can also " -"animate other properties like position or scale. Experiment and see which " -"works best for your needs." +"These examples illustrate the two classes you can use in Godot for 2D " +"animation. ``AnimationPlayer`` is a bit more complex than " +"``AnimatedSprite``, but it provides additional functionality, since you can " +"also animate other properties like position or scale. The class " +"``AnimationPlayer`` can also be used with an ``AnimatedSprite``. Experiment " +"to see what works best for your needs." msgstr "" #: ../../docs/tutorials/3d/introduction_to_3d.rst:4 @@ -25768,12 +26008,12 @@ msgstr "" #: ../../docs/tutorials/3d/introduction_to_3d.rst:162 msgid "" -"To snap placement or rotation, press the \"Ctrl\" key while moving, scaling " -"or rotating." +"To snap placement or rotation, press :kbd:`Ctrl` while moving, scaling or " +"rotating." msgstr "" #: ../../docs/tutorials/3d/introduction_to_3d.rst:164 -msgid "To center the view on the selected object, press the \"f\" key." +msgid "To center the view on the selected object, press :kbd:`F`." msgstr "" #: ../../docs/tutorials/3d/introduction_to_3d.rst:167 @@ -29257,7 +29497,7 @@ msgstr "" #: ../../docs/tutorials/3d/high_dynamic_range.rst:27 msgid "" "This means that some transformation of the scene light intensity, also known " -"as scene-referred light ratios, need to be transformed and mapped to fit " +"as *scene-referred* light ratios, need to be transformed and mapped to fit " "within the particular output range of the chosen display. This can be most " "easily understood if we consider virtually photographing our game engine " "scene through a virtual camera. Here, our virtual camera would apply a " @@ -29289,73 +29529,72 @@ msgstr "" #: ../../docs/tutorials/3d/high_dynamic_range.rst:50 msgid "" -"Not all displays use the same OETF and EOTF as a computer display however, " -"for example, television broadcast displays use the BT.1886 EOTF. It should " -"be noted that Godot is limited in its pixel management chain, and only " -"supports sRGB displays currently." +"Not all displays use the same OETF and EOTF as a computer display. For " +"example, television broadcast displays use the BT.1886 EOTF. However, Godot " +"currently only supports sRGB displays." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:55 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:54 msgid "" "The sRGB standard is based around the nonlinear relationship between the " "current to light output of common desktop computing CRT displays." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:60 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:59 msgid "" -"The mathematics of a scene referred model require that we multiply the scene " +"The mathematics of a scene-referred model require that we multiply the scene " "by different values to adjust the intensities and exposure to different " -"light ranges. The transfer function of the display cannot appropriately " +"light ranges. The transfer function of the display can't appropriately " "render the wider dynamic range of the game engine's scene output using the " -"simple transfer function of the display however, and therefore a more " -"complex approach to encoding is required." +"simple transfer function of the display. A more complex approach to encoding " +"is required." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:68 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:67 msgid "Scene linear & asset pipelines" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:70 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:69 msgid "" -"Working in scene linear sRGB is not as simple as just pressing a switch. " +"Working in scene-linear sRGB is not as simple as just pressing a switch. " "First, imported image assets must be converted to linear light ratios on " "import. Even when linearized, those assets may not be perfectly well suited " "for use as textures, depending on how they were generated." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:75 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:74 msgid "There are two ways to do this:" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:78 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:77 msgid "sRGB transfer function to display linear ratios on image import" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:80 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:79 msgid "" -"This is the easiest, but not the most ideal, method of using sRGB assets. " -"One issue with this is loss of quality. Using 8 bit per channel to represent " -"linear light ratios is not a sufficient but depth to quantise the values " -"correctly. These textures might later be compressed too, which can " -"exacerbate the problem." +"This is the easiest method of using sRGB assets, but it's not the most " +"ideal. One issue with this is loss of quality. Using 8 bits per channel to " +"represent linear light ratios is not sufficient to quantize the values " +"correctly. These textures may also be compressed later, which can exacerbate " +"the problem." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:86 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:85 msgid "Hardware sRGB transfer function to display linear conversion" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:88 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:87 msgid "" "The GPU will do the conversion after reading the texel using floating point. " -"This works fine on PC and consoles, but most mobile devices do no support " -"it, or do not support it on compressed texture format (iOS for example)." +"This works fine on PC and consoles, but most mobile devices don't support " +"it, or they don't support it on compressed texture formats (iOS for example)." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:94 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:92 msgid "Scene linear to display referred nonlinear" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:96 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:94 msgid "" "After all the rendering is done, the scene linear render requires " "transforming to a suitable output such as an sRGB display. To do this, " @@ -29363,24 +29602,24 @@ msgid "" "(more on that below)." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:100 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:98 msgid "" -"Keep in mind that sRGB -> Display Linear and Display Linear -> sRGB " -"conversions must always be **both** enabled. Failing to enable one of them " -"will result in horrible visuals suitable only for avant-garde experimental " -"indie games." +"Keep in mind that the **sRGB -> Display Linear** and **Display Linear -> " +"sRGB** conversions must always be **both** enabled. Failing to enable one of " +"them will result in horrible visuals suitable only for avant-garde " +"experimental indie games." msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:106 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:104 msgid "Parameters of HDR" msgstr "" -#: ../../docs/tutorials/3d/high_dynamic_range.rst:108 +#: ../../docs/tutorials/3d/high_dynamic_range.rst:106 msgid "" -"HDR setting can be found in the :ref:`Environment ` " -"resource. These are found most of the time inside a :ref:`WorldEnvironment " -"` node or set in a camera. For more information see :" -"ref:`doc_environment_and_post_processing`." +"HDR settings can be found in the :ref:`Environment ` " +"resource. Most of the time, these are found inside a :ref:`WorldEnvironment " +"` node or set in a Camera node. For more " +"information, see :ref:`doc_environment_and_post_processing`." msgstr "" #: ../../docs/tutorials/3d/using_gridmaps.rst:4 @@ -29504,19 +29743,19 @@ msgstr "" #: ../../docs/tutorials/3d/using_gridmaps.rst:87 msgid "" "Now you can start designing the level by choosing a tile from the palette " -"and placing it with Left-Click in the editor window. To remove a tile, use " -"Shift+Right-click." +"and placing it with Left-Click in the editor window. To remove a tile, hold :" +"kbd:`Shift` and use Right-click." msgstr "" #: ../../docs/tutorials/3d/using_gridmaps.rst:91 msgid "" "Click on the \"GridMap\" menu to see options and shortcuts. For example, " -"pressing \"S\" rotates a tile around the y-axis." +"pressing :kbd:`S` rotates a tile around the y-axis." msgstr "" #: ../../docs/tutorials/3d/using_gridmaps.rst:96 msgid "" -"Holding and dragging with the left mouse button will draw a " +"Holding :kbd:`Shift` and dragging with the left mouse button will draw a " "selection box. You can duplicate or clear the selected area using the " "respective menu options." msgstr "" @@ -30700,9 +30939,9 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:569 msgid "" -"You can change between local and world space modes by pressing T or the " -"little cube button when you have a :ref:`Spatial ` based node " -"selected." +"You can change between local and world space modes by pressing :kbd:`T` or " +"the little cube button when you have a :ref:`Spatial ` based " +"node selected." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:574 @@ -30948,9 +31187,9 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:683 msgid "" -"Go ahead and test your code either by pressing ``F6`` with ``Testing_Area." +"Go ahead and test your code either by pressing :kbd:`F6` with ``Testing_Area." "tscn`` as the open tab, by pressing the play button in the top right corner, " -"or by pressing ``F5``. You should now be able to walk around, jump in the " +"or by pressing :kbd:`F5`. You should now be able to walk around, jump in the " "air, and look around using the mouse." msgstr "" @@ -31053,8 +31292,8 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:832 msgid "" -"You should now be able to sprint if you press the ``shift`` button, and can " -"toggle the flash light on and off by pressing the ``F`` button!" +"You should now be able to sprint if you press :kbd:`Shift`, and can toggle " +"the flash light on and off by pressing :kbd:`F`!" msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:834 @@ -31065,7 +31304,7 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:837 #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:1226 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:666 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:668 #: ../../docs/tutorials/3d/fps_tutorial/part_four.rst:778 #: ../../docs/tutorials/3d/fps_tutorial/part_five.rst:951 #: ../../docs/tutorials/3d/fps_tutorial/part_six.rst:996 @@ -31101,7 +31340,7 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_one.rst:850 #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:1237 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:681 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:683 #: ../../docs/tutorials/3d/fps_tutorial/part_four.rst:787 #: ../../docs/tutorials/3d/fps_tutorial/part_five.rst:960 #: ../../docs/tutorials/3d/fps_tutorial/part_six.rst:1004 @@ -31484,7 +31723,7 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:303 msgid "" -"For finer control when scrubbing the timeline, press ``control`` and scroll " +"For finer control when scrubbing the timeline, press :kbd:`Ctrl` and scroll " "forward with the mouse wheel to zoom in. Scrolling backwards will zoom out." msgstr "" @@ -31497,8 +31736,8 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:308 msgid "" "Once you get to a point you like, right click on the row for \"Animation " -"Player\" and press insert key. In the empty name field, enter " -"``animation_callback`` and press ``enter``." +"Player\" and press ``Insert Key``. In the empty name field, enter " +"``animation_callback`` and press :kbd:`Enter`." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:314 @@ -31530,7 +31769,7 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:327 msgid "" "Type \"animation_callback\" into the name field of the pop up which opened " -"and press ``enter``." +"and press :kbd:`Enter`." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:329 @@ -31553,7 +31792,7 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:337 msgid "" "From there right click on the timeline and click \"Insert Key\". Put " -"\"animation_callback\" into the name field and press ``enter``." +"\"animation_callback\" into the name field and press :kbd:`Enter`." msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:339 @@ -31590,7 +31829,7 @@ msgstr "" msgid "" "There are several advantages to this method. The first being we do not have " "to store the bullets in our player. We can simply create the bullet and then " -"move on, and the bullet itself with handle checking for collisions, sending " +"move on, and the bullet itself will handle checking for collisions, sending " "the proper signal(s) to the object it collides with, and destroying itself." msgstr "" @@ -32607,7 +32846,7 @@ msgid "Add the following code:" msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:1107 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:533 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:535 #: ../../docs/tutorials/3d/fps_tutorial/part_four.rst:290 msgid "Let's go over what's happening here:" msgstr "" @@ -32808,8 +33047,8 @@ msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:1219 msgid "" -"If you select the top cube, and then hold down ``shift`` and select the last " -"cube, Godot will select all the cubes in-between!" +"If you select the top cube, and then hold down :kbd:`Shift` and select the " +"last cube, Godot will select all the cubes in-between!" msgstr "" #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:1222 @@ -32877,83 +33116,83 @@ msgid "" "tscn``)." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:28 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:29 msgid "" "``Space_Level.tscn`` and ``Ruins_Level.tscn`` are complete custom FPS levels " -"created for the purpose of this tutorial. Press ``F6`` to play the open " -"scene, or press the ``play current scene button``, and give each a try." +"created for the purpose of this tutorial. Press ``Play Current Scene`` " +"button, or :kbd:`F6` on keyboard, and give each a try." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:31 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:33 msgid "" "``Space_Level.tscn`` is more graphically demanding of the GPU than " "``Ruins_Level.tscn``. If your computer is struggling to render ``Space_Level." "tscn``, try using ``Ruins_Level.tscn`` instead." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:34 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:36 msgid "" "You might have noticed there are several :ref:`RigidBody ` " "nodes placed throughout the level. We can place ``RigidBody_hit_test.gd`` on " "them and then they will react to being hit with bullets, so let's do that!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:37 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:39 msgid "" "Follow the instructions below for either (or both) of the scenes you want to " "use" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:73 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:75 msgid "" "Now you can fire at all the rigid bodies in either level and they will react " "to bullets hitting them!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:76 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:78 msgid "Adding ammo" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:78 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:80 msgid "" "Now that the player has working guns, let's give them a limited amount of " "ammo." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:80 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:82 msgid "" "Firstly, we need to define a few variables in each of our weapon scripts." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:82 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:191 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:84 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:193 msgid "Open up ``Weapon_Pistol.gd`` and add the following class variables:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:90 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:92 msgid "``ammo_in_weapon``: The amount of ammo currently in the pistol" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:91 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:93 msgid "" "``spare_ammo``: The amount of ammo we have left in reserve for the pistol" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:92 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:94 msgid "``AMMO_IN_MAG``: The amount of ammo in a fully reloaded weapon/magazine" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:94 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:96 msgid "Now all we need to do is add a single line of code to ``fire_weapon``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:96 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:98 msgid "" "Add the following right under ``Clone.BULLET_DAMAGE = DAMAGE``: " "``ammo_in_weapon -= 1``" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:98 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:100 msgid "" "This will remove one from ``ammo_in_weapon`` every time the player fires. " "Notice we're not checking to see if the player has enough ammo or not in " @@ -32961,29 +33200,29 @@ msgid "" "enough ammo in ``Player.gd``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:103 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:105 msgid "Now we need to add ammo for both the rifle and the knife." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:105 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:107 msgid "" "You may be wondering why we are adding ammo for the knife given it does not " "consume any ammunition. The reason we want to add ammo to the knife is so we " "have a consistent interface for all our weapons." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:108 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:110 msgid "" "If we did not add ammo variables for the knife, we would have to add checks " "for the knife. By adding the ammo variables to the knife, we don't need to " "worry about whether or not all our weapons have the same variables." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:111 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:113 msgid "Add the following class variables to ``Weapon_Rifle.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:119 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:121 msgid "" "And then add the following to ``fire_weapon``: ``ammo_in_weapon -= 1``. Make " "sure that ``ammo_in_weapon -= 1`` is outside of the ``if ray." @@ -32991,128 +33230,128 @@ msgid "" "player hit something or not." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:122 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:124 msgid "" "Now all that's left is the knife. Add the following to ``Weapon_Knife.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:130 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:132 msgid "Because the knife does not consume ammo, that is all we need to add." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:134 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:136 msgid "Now we need to change one thing in ``Player.gd``, that is to say," msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:136 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:138 msgid "" "how we're firing the weapons in ``process_input``. Change the code for " "firing weapons to the following:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:151 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:153 msgid "" "Now the weapons have a limited amount of ammo, and will stop firing when the " "player runs out." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:155 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:157 msgid "" "Ideally, we'd like to let the player be able to see how much ammo is left. " "Let's make a new function called ``process_UI``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:157 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:159 msgid "First, add ``process_UI(delta)`` to ``_physics_process``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:159 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:161 msgid "Now add the following to ``Player.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:171 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:233 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:173 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:235 #: ../../docs/tutorials/3d/fps_tutorial/part_four.rst:216 msgid "Let's go over what's happening:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:173 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:175 msgid "" "Firstly, we check to see if the current weapon is either ``UNARMED`` or " "``KNIFE``. If it is, we change the ``UI_status_label``'s text to only show " "the player's health since ``UNARMED`` and ``KNIFE`` do not consume ammo." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:176 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:178 msgid "" "If the player is using a weapon that consumes ammo, we first get the weapon " "node." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:178 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:180 msgid "" "Then we change ``UI_status_label``'s text to show the player's health, along " "with how much ammo the player has in the weapon and how much spare ammo the " "player has for that weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:182 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:184 msgid "Now we can see how much ammo the player has through the HUD." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:185 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:187 msgid "Adding reloading to the weapons" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:187 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:189 msgid "" "Now that the player can run out of ammo, we need a way to let the player " "fill them back up. Let's add reloading next!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:189 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:191 msgid "" "For reloading, we need to add a few more variables and a function to every " "weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:200 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:202 msgid "" "``CAN_RELOAD``: A boolean to track whether this weapon has the ability to " "reload" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:201 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:203 msgid "" "``CAN_REFILL``: A boolean to track whether we can refill this weapon's spare " "ammo. We will not be using ``CAN_REFILL`` in this part, but we will in the " "next part!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:202 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:204 msgid "" "``RELOADING_ANIM_NAME``: The name of the reloading animation for this weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:204 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:206 msgid "" "Now we need to add a function for handling reloading. Add the following " "function to ``Weapon_Pistol.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:235 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:237 msgid "" "First we define a variable to see whether or not this weapon can reload." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:237 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:239 msgid "" "Then we check to see if the player is in this weapon's idle animation state " "because we only want to be able to reload when the player is not firing, " "equipping, or unequipping." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:240 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:242 msgid "" "Next we check to see if the player has spare ammo, and if the ammo already " "in the weapon is equal to a fully reloaded weapon. This way we can ensure " @@ -33120,246 +33359,246 @@ msgid "" "already full of ammo." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:243 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:245 msgid "" "If we can still reload, then we calculate the amount of ammo needed to " "reload the weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:245 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:247 msgid "" "If the player has enough ammo to fill the weapon, we remove the ammo needed " "from ``spare_ammo`` and then set ``ammo_in_weapon`` to a full weapon/" "magazine." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:247 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:249 msgid "" "If the player does not have enough ammo, we add all the ammo left in " "``spare_ammo``, and then set ``spare_ammo`` to ``0``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:249 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:251 msgid "" "Next we play the reloading animation for this weapon, and then return " "``true``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:251 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:253 msgid "If the player could not reload, we return ``false``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:255 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:257 msgid "" "Now we need to add reloading to the rifle. Open up ``Weapon_Rifle.gd`` and " "add the following class variables:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:264 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:266 msgid "" "These variables are exactly the same as the pistol, just with " "``RELOADING_ANIM_NAME`` changed to the rifle's reloading animation." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:266 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:268 msgid "Now we need to add ``reload_weapon`` to ``Weapon_Rifle.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:295 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:297 msgid "This code is exactly the same as the one for the pistol." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:299 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:301 msgid "" "The last bit we need to do for the weapons is add 'reloading' to the knife. " "Add the following class variables to ``Weapon_Knife.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:308 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:310 msgid "" "Since we both cannot reload or refill a knife, we set both constants to " "``false``. We also define ``RELOADING_ANIM_NAME`` as an empty string, since " "the knife has no reloading animation." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:311 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:313 msgid "Now we need to add ``reloading_weapon``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:318 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:320 msgid "Since we cannot reload a knife, we always return ``false``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:321 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:323 msgid "Adding reloading to the player" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:323 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:325 msgid "" "Now we need to add a few things to ``Player.gd``. First we need to define a " "new class variable:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:329 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:331 msgid "" "``reloading_weapon``: A variable to track whether or not the player is " "currently trying to reload." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:332 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:334 msgid "Next we need to add another function call to ``_physics_process``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:334 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:336 msgid "" "Add ``process_reloading(delta)`` to ``_physics_process``. Now " "``_physics_process`` should look something like this:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:345 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:347 msgid "" "Now we need to add ``process_reloading``. Add the following function to " "``Player.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:356 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:407 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:358 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:409 #: ../../docs/tutorials/3d/fps_tutorial/part_five.rst:362 #: ../../docs/tutorials/3d/fps_tutorial/part_six.rst:424 msgid "Let's go over what's happening here." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:358 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:360 msgid "Firstly, we check to make sure the player is trying to reload." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:360 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:362 msgid "" "If the player is trying to reload, we then get the current weapon. If the " "current weapon does not equal ``null``, we call its ``reload_weapon`` " "function." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:362 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:364 msgid "" "If the current weapon is equal to ``null``, then the current weapon is " "``UNARMED``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:364 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:366 msgid "" "Finally, we set ``reloading_weapon`` to ``false`` because, regardless of " "whether the player successfully reloaded, we've tried reloading and no " "longer need to keep trying." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:369 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:371 msgid "" "Before we can let the player reload, we need to change a few things in " "``process_input``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:371 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:373 msgid "" "The first thing we need to change is in the code for changing weapons. We " "need to add an additional check (``if reloading_weapon == false:``) to see " "if the player is reloading:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:382 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:384 msgid "" "This makes it so the player cannot change weapons if the player is reloading." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:384 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:386 msgid "" "Now we need to add the code to trigger a reload when the player pushes the " "``reload`` action. Add the following code to ``process_input``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:409 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:411 msgid "" "First we make sure the player is not reloading already, nor is the player " "trying to change weapons." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:411 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:413 msgid "Then we check to see if the ``reload`` action has been pressed." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:413 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:415 msgid "" "If the player has pressed ``reload``, we then get the current weapon and " "check to make sure it is not ``null``. Then we check to see whether the " "weapon can reload or not using its ``CAN_RELOAD`` constant." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:416 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:418 msgid "" "If the weapon can reload, we then get the current animation state, and make " "a variable for tracking whether the player is already reloading or not." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:418 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:420 msgid "" "We then go through every weapon to make sure the player is not already " "playing that weapon's reloading animation." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:420 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:422 msgid "" "If the player is not reloading any weapon, we set ``reloading_weapon`` to " "``true``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:424 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:426 msgid "" "One thing I like to add is where the weapon will reload itself if you try to " "fire it and it's out of ammo." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:426 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:428 msgid "" "We also need to add an additional if check (``is_reloading_weapon == false:" "``) so the player cannot fire the current weapon while reloading." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:429 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:431 msgid "" "Let's change our firing code in ``process_input`` so it reloads when trying " "to fire an empty weapon:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:447 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:449 msgid "" "Now we check to make sure the player is not reloading before we fire the " "weapon, and when we have ``0`` or less ammo in the current weapon, we set " "``reloading_weapon`` to ``true`` if the player tries to fire." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:450 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:452 msgid "" "This will make it so the player will try to reload when attempting to fire " "an empty weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:454 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:456 msgid "" "With that done, the player can now reload! Give it a try! Now you can fire " "all the spare ammo for each weapon." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:457 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:459 msgid "Adding sounds" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:459 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:461 msgid "" "Finally, let's add some sounds that accompany the player firing, reloading " "and changing weapons." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:461 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:463 msgid "" "There are no game sounds provided in this tutorial (for legal reasons). " "https://gamesounds.xyz/ is a collection of **\"royalty free or public domain " @@ -33367,28 +33606,28 @@ msgid "" "which can be found in the Sonniss.com GDC 2017 Game Audio Bundle." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:465 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:467 msgid "" "Open up ``Simple_Audio_Player.tscn``. It is simply a :ref:`Spatial " "` with an :ref:`AudioStreamPlayer ` " "as its child." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:467 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:469 msgid "" "The reason this is called a 'simple' audio player is because we are not " "taking performance into account and because the code is designed to provide " "sound in the simplest way possible." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:470 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:472 msgid "" "If you want to use 3D audio, so it sounds like it's coming from a location " "in 3D space, right click the :ref:`AudioStreamPlayer " "` and select \"Change type\"." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:473 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:475 msgid "" "This will open the node browser. Navigate to :ref:`AudioStreamPlayer3D " "` and select \"change\". In the source for this " @@ -33398,21 +33637,21 @@ msgid "" "code provided below will work regardless of which one you chose." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:478 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:480 msgid "" "Create a new script and call it ``Simple_Audio_Player.gd``. Attach it to " "the :ref:`Spatial ` in ``Simple_Audio_Player.tscn`` and " "insert the following code:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:530 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:532 msgid "" "By setting ``position`` to ``null`` by default in ``play_sound``, we are " "making it an optional argument, meaning ``position`` doesn't necessarily " "have to be passed in to call ``play_sound``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:537 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:539 msgid "" "In ``_ready``, we get the :ref:`AudioStreamPlayer ` " "and connect its ``finished`` signal to the ``destroy_self`` function. It " @@ -33422,13 +33661,13 @@ msgid "" "``stop`` on the :ref:`AudioStreamPlayer `." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:541 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:543 msgid "" "Make sure your sound files are **not** set to loop! If it is set to loop, " "the sounds will continue to play infinitely and the script will not work!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:544 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:546 msgid "" "The ``play_sound`` function is what we will be calling from ``Player.gd``. " "We check if the sound is one of the three possible sounds, and if it is one " @@ -33436,26 +33675,26 @@ msgid "" "` to the correct sound." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:548 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:550 msgid "" "If it is an unknown sound, we print an error message to the console and free " "the audio player." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:550 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:552 msgid "" "If you are using an :ref:`AudioStreamPlayer3D `, " "remove the ``#`` to set the position of the audio player node so it plays at " "the correct position." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:553 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:555 msgid "" "Finally, we tell the :ref:`AudioStreamPlayer ` to " "play." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:555 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:557 msgid "" "When the :ref:`AudioStreamPlayer ` is finished " "playing the sound, it will call ``destroy_self`` because we connected the " @@ -33463,11 +33702,11 @@ msgid "" "` and free the audio player to save on resources." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:559 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:561 msgid "This system is extremely simple and has some major flaws:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:561 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:563 msgid "" "One flaw is we have to pass in a string value to play a sound. While it is " "relatively simple to remember the names of the three sounds, it can be " @@ -33476,7 +33715,7 @@ msgid "" "remember the name(s) of each sound effect we want to play." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:566 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:568 msgid "" "Another flaw is we cannot play looping sounds effects, nor background music, " "easily with this system. Because we cannot play looping sounds, certain " @@ -33485,21 +33724,21 @@ msgid "" "we need to continue playing it." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:571 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:573 msgid "" "One of the biggest flaws with this system is we can only play sounds from " "``Player.gd``. Ideally we'd like to be able to play sounds from any script " "at any time." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:576 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:578 msgid "" "With that done, let's open up ``Player.gd`` again. First we need to load the " "``Simple_Audio_Player.tscn``. Place the following code in the class " "variables section of the script:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:583 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:585 msgid "" "Now we need to instance the simple audio player when we need it, and then " "call its ``play_sound`` function and pass the name of the sound we want to " @@ -33507,23 +33746,23 @@ msgid "" "in ``Player.gd``:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:595 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:597 msgid "Let's walk through what this function does:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:599 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:601 msgid "" "The first line instances the ``Simple_Audio_Player.tscn`` scene and assigns " "it to a variable named ``audio_clone``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:602 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:604 msgid "" "The second line gets the scene root, and this has a large (though safe) " "assumption." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:604 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:606 msgid "" "We first get this node's :ref:`SceneTree `, and then access " "the root node, which in this case is the :ref:`Viewport ` " @@ -33534,7 +33773,7 @@ msgid "" "the player is under, which may not always be the case**." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:610 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:612 msgid "" "If this doesn't make sense to you, don't worry too much about it. The second " "line of code only does not work reliably if you have multiple scenes loaded " @@ -33543,96 +33782,96 @@ msgid "" "potentially a issue depending on how you handle scene loading." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:614 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:616 msgid "" "The third line adds our newly created ``Simple_Audio_Player`` scene to be a " "child of the scene root. This works exactly the same as when we are spawning " "bullets." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:617 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:619 msgid "" "Finally, we call the ``play_sound`` function and pass in the arguments " "passed in to ``create_sound``. This will call ``Simple_Audio_Player.gd``'s " "``play_sound`` function with the passed in arguments." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:622 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:624 msgid "" "Now all that is left is playing the sounds when we want to. Let's add sound " "to the pistol first!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:624 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:626 msgid "Open up ``Weapon_Pistol.gd``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:626 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:628 msgid "" "Now, we want to make a noise when the player fires the pistol, so add the " "following to the end of the ``fire_weapon`` function:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:632 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:634 msgid "" "Now when the player fires the pistol, we'll play the ``Pistol_shot`` sound." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:634 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:656 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:636 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:658 msgid "" "To make a sound when the player reloads, we need to add the following right " "under ``player_node.animation_manager.set_animation(RELOADING_ANIM_NAME)`` " "in the ``reload_weapon`` function:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:641 -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:663 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:643 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:665 msgid "Now when the player reloads, we'll play the ``Gun_cock`` sound." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:645 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:647 msgid "Now let's add sounds to the rifle. Open up ``Weapon_Rifle.gd``." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:648 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:650 msgid "" "To play sounds when the rifle is fired, add the following to the end of the " "``fire_weapon`` function:" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:654 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:656 msgid "" "Now when the player fires the rifle, we'll play the ``Rifle_shot`` sound." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:670 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:672 msgid "" "Now you have weapons with limited ammo that play sounds when you fire them!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:672 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:674 msgid "" "At this point, we have all the basics of an FPS game working. There are " "still a few things that would be nice to add, and we're going to add them in " "the next three parts!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:675 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:677 msgid "" "For example, right now we have no way to add ammo to our spares, so we'll " "eventually run out. Also, we don't have anything to shoot at outside of the :" "ref:`RigidBody ` nodes." msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:678 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:680 msgid "" "In :ref:`doc_fps_tutorial_part_four` we'll add some targets to shoot at, " "along with some health and ammo pick ups! We're also going to add joypad " "support, so we can play with wired Xbox 360 controllers!" msgstr "" -#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:683 +#: ../../docs/tutorials/3d/fps_tutorial/part_three.rst:685 msgid "" "You can download the finished project for this part here: :download:" "`Godot_FPS_Part_3.zip `" @@ -38510,22 +38749,16 @@ msgstr "" #: ../../docs/tutorials/audio/sync_with_audio.rst:35 msgid "" "Add these two and it's possible to guess almost exactly when sound or music " -"will begin playing in the speakers:" +"will begin playing in the speakers during *_process()*:" msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:43 -msgid "" -"This way, obtaining the actual playback position during *_process()* is " -"possible:" -msgstr "" - -#: ../../docs/tutorials/audio/sync_with_audio.rst:66 +#: ../../docs/tutorials/audio/sync_with_audio.rst:58 msgid "" "In the long run, though, as the sound hardware clock is never exactly in " "sync with the system clock, the timing information will slowly drift away." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:68 +#: ../../docs/tutorials/audio/sync_with_audio.rst:60 msgid "" "For a rhythm game where a song begins and ends after a few minutes, this " "approach is fine (and it's the recommended approach). For a game where " @@ -38533,11 +38766,11 @@ msgid "" "sync and a different approach is needed." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:71 +#: ../../docs/tutorials/audio/sync_with_audio.rst:63 msgid "Using the sound hardware clock to sync" msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:73 +#: ../../docs/tutorials/audio/sync_with_audio.rst:65 msgid "" "Using :ref:`AudioStreamPlayer." "get_playback_position()` " @@ -38548,26 +38781,26 @@ msgid "" "of the previously mentioned reasons." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:75 +#: ../../docs/tutorials/audio/sync_with_audio.rst:67 msgid "" "To compensate for the \"chunked\" output, there is a function that can " "help: :ref:`AudioServer." "get_time_since_last_mix()`." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:78 +#: ../../docs/tutorials/audio/sync_with_audio.rst:70 msgid "" "Adding the return value from this function to *get_playback_position()* " "increases precision:" msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:85 +#: ../../docs/tutorials/audio/sync_with_audio.rst:77 msgid "" "To increase precision, subtract the latency information (how much it takes " "for the audio to be heard after it was mixed):" msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:92 +#: ../../docs/tutorials/audio/sync_with_audio.rst:84 msgid "" "The result may be a bit jittery due how multiple threads work. Just check " "that the value is not less than in the previous frame (discard it if so). " @@ -38576,7 +38809,7 @@ msgid "" "example) to music." msgstr "" -#: ../../docs/tutorials/audio/sync_with_audio.rst:94 +#: ../../docs/tutorials/audio/sync_with_audio.rst:86 msgid "Here is the same code as before using this approach:" msgstr "" @@ -41166,518 +41399,667 @@ msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:9 msgid "" -"Before reading this tutorial, it is advised to read the previous one about :" -"ref:`doc_vector_math` as this one is a direct continuation." +"Before reading this tutorial, we recommend that you thoroughly read and " +"understand the :ref:`doc_vector_math` tutorial, as this tutorial requires a " +"knowledge of vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:12 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:13 msgid "" -"This tutorial will be about *transformations* and will cover a little about " -"matrices (but not in-depth)." +"This tutorial is about *transformations* and how we represent them in Godot " +"using matrices. It is not a full in-depth guide to matrices. Transformations " +"are most of the time applied as translation, rotation, and scale, so we will " +"focus on how to represent those with matrices." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:15 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:18 msgid "" -"Transformations are most of the time applied as translation, rotation and " -"scale so they will be considered as priority here." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:19 -msgid "Oriented coordinate system (OCS)" +"Most of this guide focuses on 2D, using :ref:`class_Transform2D` and :ref:" +"`class_Vector2`, but the way things work in 3D is very similar." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:21 msgid "" -"Imagine we have a spaceship somewhere in space. In Godot this is easy, just " -"move the ship somewhere and rotate it:" +"As mentioned in the previous tutorial, it is important to remember that in " +"Godot, the Y axis points *down* in 2D. This is the opposite of how most " +"schools teach linear algebra, with the Y axis pointing up." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:26 msgid "" -"Ok, so in 2D this looks simple, a position and an angle for a rotation. But " -"remember, we are grown ups here and don't use angles (plus, angles are not " -"even that useful when working in 3D)." +"The convention is that the X axis is red, the Y axis is green, and the Z " +"axis is blue. This tutorial is color-coded to match these conventions, but " +"we will also represent the origin vector with a blue color." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:30 -msgid "" -"We should realize that at some point, someone *designed* this spaceship. Be " -"it for 2D in a drawing such as Paint.net, Gimp, Photoshop, etc. or in 3D " -"through a 3D DCC tool such as Blender, Max, Maya, etc." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:32 +msgid "Matrix components and the Identity matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:35 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:34 msgid "" -"When it was designed, it was not rotated. It was designed in its own " -"*coordinate system*." +"The identity matrix represents a transform with no translation, no rotation, " +"and no scale. Let's start by looking at the identity matrix and how its " +"components relate to how it visually appears." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:40 msgid "" -"This means that the tip of the ship has a coordinate, the fin has another, " -"etc. Be it in pixels (2D) or vertices (3D)." +"Matrices have rows and columns, and a transformation matrix has specific " +"conventions on what each does." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:43 -msgid "So, let's recall again that the ship was somewhere in space:" +msgid "" +"In the image above, we can see that the red X vector is represented by the " +"first column of the matrix, and the green Y vector is likewise represented " +"by the second column. A change to the columns will change these vectors. We " +"will see how they can be manipulated in the next few examples." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:47 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:49 msgid "" -"How did it get there? What moved it and rotated it from the place it was " -"designed to its current position? The answer is... a **transform**, the ship " -"was *transformed* from their original position to the new one. This allows " -"the ship to be displayed where it is." +"You should not worry about manipulating rows directly, as we usually work " +"with columns. However, you can think of the rows of the matrix as showing " +"which vectors contribute to moving in a given direction." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:52 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:53 msgid "" -"But transform is too generic of a term to describe this process. To solve " -"this puzzle, we will superimpose the ship's original design position at " -"their current position:" +"When we refer to a value such as `t.x.y`, that's the Y component of the X " +"column vector. In other words, the bottom-left of the matrix. Similarly, `t." +"x.x` is top-left, `t.y.x` is top-right,and `t.y.y` is bottom-right, where " +"`t` is the Transform2D." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:58 -msgid "" -"So, we can see that the \"design space\" has been transformed too. How can " -"we best represent this transformation? Let's use 3 vectors for this (in 2D), " -"a unit vector pointing towards X positive, a unit vector pointing towards Y " -"positive and a translation." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:59 +msgid "Scaling the transformation matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:65 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:61 msgid "" -"Let's call the 3 vectors \"X\", \"Y\" and \"Origin\", and let's also " -"superimpose them over the ship so it makes more sense:" +"Applying a scale is one of the easiest operations to understand. Let's start " +"by placing the Godot logo underneath our vectors so that we can visually see " +"the effects on an object:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:70 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:67 msgid "" -"Ok, this is nicer, but it still does not make sense. What do X,Y and Origin " -"have to do with how the ship got there?" +"Now, to scale the matrix, all we need to do is multiply each component by " +"the scale we want. Let's scale it up by 2. 1 times 2 becomes 2, and 0 times " +"2 becomes 0, so we end up with this:" msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:73 -msgid "Well, let's take the point from top tip of the ship as reference:" +msgid "To do this in code, we can simply multiply each of the vectors:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:77 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:92 msgid "" -"And let's apply the following operation to it (and to all the points in the " -"ship too, but we'll track the top tip as our reference point):" +"If we wanted to return it to its original scale, we can multiply each " +"component by 0.5. That's pretty much all there is to scaling a " +"transformation matrix." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:89 -msgid "Doing this to the selected point will move it back to the center:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:93 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:96 msgid "" -"This was expected, but then let's do something more interesting. Use the dot " -"product of X and the point, and add it to the dot product of Y and the point:" +"To calculate the object's scale from an existing transformation matrix, you " +"can use `length()` on each of the column vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:106 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:99 msgid "" -"Then what we have is.. wait a minute, it's the ship in its design position!" +"In actual projects, you can use the `scaled()` method to perform scaling." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:111 -msgid "" -"How did this black magic happen? The ship was lost in space, and now it's " -"back home!" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:103 +msgid "Rotating the transformation matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:114 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:105 msgid "" -"It might seem strange, but it does have plenty of logic. Remember, as we " -"have seen in the :ref:`doc_vector_math`, what happened is that the distance " -"to X axis, and the distance to Y axis were computed. Calculating distance in " -"a direction or plane was one of the uses for the dot product. This was " -"enough to obtain back the design coordinates for every point in the ship." +"We'll start the same way as earlier, with the Godot logo underneath the " +"identity matrix:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:121 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:110 msgid "" -"So, what we have been working with so far (with X, Y and Origin) is an " -"*Oriented Coordinate System*. X an Y are the **Basis**, and *Origin* is the " -"offset." +"As an example, let's say we want to rotate our Godot logo clockwise by 90 " +"degrees. Right now the X axis points right and the Y axis points down. If we " +"rotate these in our head, we would logically see that the new X axis should " +"point down and the new Y axis should point left." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:128 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:116 msgid "" -"We know what the Origin is. It's where the 0,0 (origin) of the design " -"coordinate system ended up after being transformed to a new position. This " -"is why it's called *Origin*, But in practice, it's just an offset to the new " -"position." +"You can imagine that you grab both the Godot logo and its vectors, and then " +"spin it around the center. Wherever you finish spinning, the orientation of " +"the vectors determines what the matrix is." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:133 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:120 msgid "" -"The Basis is more interesting. The basis is the direction of X and Y in the " -"OCS from the new, transformed location. It tells what has changed, in either " -"2D or 3D. The Origin (offset) and Basis (direction) communicate \"Hey, the " -"original X and Y axes of your design are *right here*, pointing towards " -"*these directions*.\"" +"We need to represent \"down\" and \"left\" in normal coordinates, so means " +"we'll set X to (0, 1) and Y to (-1, 0). These are also the values of " +"`Vector2.DOWN` and `Vector2.LEFT`. When we do this, we get the desired " +"result of rotating the object:" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:127 +msgid "" +"If you have trouble understanding the above, try this excercise: Cut a " +"square of paper, draw X and Y vectors on top of it, place it on graph paper, " +"then rotate it and note the endpoints." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:131 +msgid "" +"To perform rotation in code, we need to be able to calculate the values " +"programatically. This image shows the formulas needed to calculate the " +"transformation matrix from a rotation angle. Don't worry if this part seems " +"complicated, I promise it's the hardest thing you need to know." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:139 msgid "" -"So, let's change the representation of the basis. Instead of 2 vectors, " -"let's use a *matrix*." +"Godot represents all rotations with radians, not degrees. A full turn is " +"`TAU` or `PI*2` radians, and a quarter turn of 90 degrees is `TAU/4` or " +"`PI/2` radians. Working with `TAU` usually results in more readable code." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:144 msgid "" -"The vectors are up there in the matrix, horizontally. The next problem now " -"is that.. what is this matrix thing? Well, we'll assume you've never heard " -"of a matrix." +"Fun fact: In addition to Y being *down* in Godot, rotation is represented " +"clockwise. This means that all the math and trig functions behave the same " +"as a Y-is-up CCW system, since these differences \"cancel out\". You can " +"think of rotations in both systems being \"from X to Y\"." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:149 -msgid "Transforms in Godot" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:151 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:150 msgid "" -"This tutorial will not explain matrix math (and their operations) in depth, " -"only its practical use. There is plenty of material for that, which should " -"be a lot simpler to understand after completing this tutorial. We'll just " -"explain how to use transforms." +"In order to perform a rotation of 0.5 radians (about 28.65 degrees), we " +"simply plug in a value of 0.5 to the formula above and evaluate to find what " +"the actual values should be:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:159 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:156 +msgid "Here's how that would be done in code (place the script on a Node2D):" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:178 msgid "" -":ref:`class_Transform2D` is a 3x2 matrix. It has 3 Vector2 elements and it's " -"used for 2D. The \"X\" axis is the element 0, \"Y\" axis is the element 1 " -"and \"Origin\" is element 2. It's not divided in basis/origin for " -"convenience, due to its simplicity." +"To calculate the object's rotation from an existing transformation matrix, " +"you can use `atan2(t.x.y, t.x.x)`, where t is the Transform2D." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:179 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:181 msgid "" -"Most operations will be explained with this datatype (Transform2D), but the " -"same logic applies to 3D." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:183 -msgid "Identity" +"In actual projects, you can use the `rotated()` method to perform rotations." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:185 -msgid "An important transform is the \"identity\" matrix. This means:" +msgid "Basis of the transformation matrix" msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:187 -msgid "'X' Points right: Vector2(1,0)" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:188 -msgid "'Y' Points up (or down in pixels): Vector2(0,1)" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:189 -msgid "'Origin' is the origin Vector2(0,0)" +msgid "" +"So far we have only been working with the `x` and `y`, vectors, which are in " +"charge of representing rotation, scale, and/or shearing (advanced, covered " +"at the end). The X and Y vectors are together called the *basis* of the " +"transformation matrix. The terms \"basis\" and \"basis vectors\" are " +"important to know." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:193 msgid "" -"It's easy to guess that an *identity* matrix is just a matrix that aligns " -"the transform to its parent coordinate system. It's an *OCS* that hasn't " -"been translated, rotated or scaled." +"You might have noticed that :ref:`class_Transform2D` actually has three :ref:" +"`class_Vector2` values: `x`, `y`, and `origin`. The `origin` value is not " +"part of the basis, but it is part of the transform, and we need it to " +"represent position. From now on we'll keep track of the origin vector in all " +"examples. You can think of origin as another column, but it's often better " +"to think of it as completely separate." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:220 -msgid "Operations" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:201 +msgid "" +"Note that in 3D, Godot has a separate :ref:`class_Basis` structure for " +"holding the three :ref:`class_Vector3` values of the basis, since the code " +"can get complex and it makes sense to separate it from :ref:" +"`class_Transform` (which is composed of one :ref:`class_Basis` and one " +"extra :ref:`class_Vector3` for the origin)." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:223 -msgid "Rotation" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:208 +msgid "Translating the transformation matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:225 -msgid "Rotating Transform2D is done by using the \"rotated\" function:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:210 +msgid "" +"Changing the `origin` vector is called a *translating* the transformation " +"matrix. Translating is basically a technical term for \"moving\" the object, " +"but it explicitly does not involve any rotation." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:214 +msgid "" +"This should be fairly common sense, assuming that you read and understood " +"the vector tutorial, but let's work through an example. Again, we'll start " +"with the identity transform, but this time we'll also keep track of the " +"origin vector:" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:221 +msgid "" +"If we want the object to move to a position of (1, 2), we simply need to set " +"its `origin` vector to (1, 2):" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:226 +msgid "" +"There is also a `translated()` method, which performs a different operation " +"to adding or changing `origin` directly. The `translated()` method will " +"translate the object *relative to its own rotation*. For example, an object " +"rotated 90 degrees clockwise will move to the right when `translated()` with " +"`Vector2.UP`." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:232 +msgid "" +"Godot's 2D uses coordinates based on pixels, so in actual projects you will " +"want to translate by hundreds of units." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:236 +msgid "Putting it all together" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:238 +msgid "" +"We're going to apply everything we mentioned so far onto one transform. To " +"follow along, get a simple project with a Sprite set to the Godot logo." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:241 -msgid "Translation" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:243 msgid "" -"There are two ways to translate a Transform2D, the first one is moving the " -"origin:" +"Let's set the translation to (350, 150), rotate by -0.5 rad, and scale by 3. " +"I've posted a screenshot, and the code to reproduce it, but I encourage you " +"to try and reproduce the screenshot without looking at the code!" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:263 -msgid "This will always work in global coordinates." +#: ../../docs/tutorials/math/matrices_and_transforms.rst:280 +msgid "Shearing the transformation matrix (advanced)" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:265 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:282 msgid "" -"If instead, translation is desired in *local* coordinates of the matrix " -"(towards where the *basis* is oriented), there is the :ref:`Transform2D." -"translated() ` method:" +"If you are only looking for how to *use* transformation matrices, feel free " +"to skip this section of the tutorial. This section explores an uncommonly " +"used aspect of transformation matrices for the purpose of building an " +"understanding of them." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:287 msgid "" -"You could also transform the global coordinates to local coordinates " -"manually:" +"You may have noticed that a transform has more degrees of freedom than the " +"combination of the above actions. The basis of a 2D transformation matrix " +"has four total numbers in two :ref:`class_Vector2` values, while a rotation " +"value and a Vector2 for scale only has 3 numbers. The high-level concept for " +"the missing degree of freedom is called *shearing*." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:298 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:293 msgid "" -"But even better, there are helper functions for this as you can read in the " -"next sections." +"Normally you will always have the basis vectors perpendicular to each other. " +"However, shearing can be useful in some situations, and understanding " +"shearing helps you understand how transforms work." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:301 -msgid "Local to global coordinates and vice versa" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:303 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:297 msgid "" -"There are helper methods for converting between local and global coordinates." +"To show you visually how it will look, let's overlay a grid onto the Godot " +"logo:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:305 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:302 msgid "" -"There are :ref:`Node2D.to_local() ` and :ref:" -"`Node2D.to_global() ` for 2D as well as :ref:" -"`Spatial.to_local() ` and :ref:`Spatial." -"to_global() ` for 3D." +"Each point on this grid is obtained by adding the basis vectors together. " +"The bottom-right corner is X + Y, while the top-right corner is X - Y. If we " +"change the basis vectors, the entire grid moves with it, as the grid is " +"composed of the basis vectors. All lines on the grid that are currently " +"parallel will remain parallel no matter what changes we make to the basis " +"vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:311 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:309 +msgid "As an example, let's set Y to (1, 1):" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:328 msgid "" -"A matrix can be scaled too. Scaling will multiply the basis vectors by a " -"vector (X vector by x component of the scale, Y vector by y component of the " -"scale). It will leave the origin alone:" +"You can't set the raw values of a Transform2D in the editor, so you *must* " +"use code if you want to shear the object." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:330 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:331 msgid "" -"These kind of operations in matrices are accumulative. It means every one " -"starts relative to the previous one. For those who have been living on this " -"planet long enough, a good reference of how transform works is this:" +"Due to the vectors no longer being perpendicular, the object has been " +"sheared. The bottom-center of the grid, which is (0, 1) relative to itself, " +"is now located at a world position of (1, 1)." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:337 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:335 msgid "" -"A matrix is used similarly to a turtle. The turtle most likely had a matrix " -"inside (and you are likely learning this many years *after* discovering " -"Santa is not real)." +"The intra-object coordinates are called UV coordinates in textures, so let's " +"borrow that terminology for here. To find the world position from a relative " +"position, the formula is U * X + V * Y, where U and V are numbers and X and " +"Y are the basis vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:344 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:340 msgid "" -"Transform is the act of switching between coordinate systems. To convert a " -"position (either 2D or 3D) from \"designer\" coordinate system to the OCS, " -"the \"xform\" method is used." +"The bottom-right corner of the grid, which is always at the UV position of " +"(1, 1), is at the world position of (2, 1), which is calculated from X*1 + " +"Y*1, which is (1, 0) + (1, 1), or (1 + 1, 0 + 1), or (2, 1). This matches up " +"with our observation of where the bottom-right corner of the image is." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:357 -msgid "And only for basis (no translation):" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:346 +msgid "" +"Similarly, the top-right corner of the grid, which is always at the UV " +"position of (1, -1), is at the world position of (0, -1), which is " +"calculated from X*1 + Y*-1, which is (1, 0) - (1, 1), or (1 - 1, 0 - 1), or " +"(0, -1). This matches up with our observation of where the top-right corner " +"of the image is." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:369 -msgid "Inverse transform" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:352 +msgid "" +"Hopefully you now fully understand the how a transformation matrix affects " +"the object, and the relationship between the basis vectors and how the " +"object's \"UV\" or \"intra-coordinates\" have their world position changed." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:356 +msgid "" +"In Godot, all transform math is done relative to the parent node. When we " +"refer to \"world position\", that would be relative to the node's parent " +"instead, if the node had a parent." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:360 +msgid "" +"If you would like additional explanation, you should check out 3Blue1Brown's " +"excellent video about linear transformations: https://www.youtube.com/watch?" +"v=kYB8IZa5AuE" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:365 +msgid "Practical applications of transforms" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:367 +msgid "" +"In actual projects, you will usually be working with transforms inside " +"transforms by having multiple :ref:`class_Node2D` or :ref:`class_Spatial` " +"nodes parented to each other." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:371 msgid "" -"To do the opposite operation (what we did up there with the rocket), the " -"\"xform_inv\" method is used:" +"However, sometimes it's very useful to manually calculate the values we " +"need. We will go over how you could use :ref:`class_Transform2D` or :ref:" +"`class_Transform` to manually calculate transforms of nodes." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:376 +msgid "Converting positions between transforms" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:378 +msgid "" +"There are many cases where you'd want to convert a position in and out of a " +"transform. For example, if you have a position relative to the player and " +"would like to find the world (parent-relative) position, or if you have a " +"world position and want to know where it is relative to the player." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:383 -msgid "Only for Basis:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:395 -msgid "Orthonormal matrices" +msgid "" +"We can find what a vector relative to the player would be defined in world " +"space as using the \"xform\" method:" msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:397 msgid "" -"However, if the matrix has been scaled (vectors are not unit length), or the " -"basis vectors are not orthogonal (90°), the inverse transform will not work." +"And we can use the \"xform_inv\" method to find a what world space position " +"would be if it was instead defined relative to the player:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:401 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:411 msgid "" -"In other words, inverse transform is only valid in *orthonormal* matrices. " -"For this, these cases an affine inverse must be computed." +"If you know in advance that the transform is positioned at (0, 0), you can " +"use the \"basis_xform\" or \"basis_xform_inv\" methods instead, which skip " +"dealing with translation." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:404 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:416 +msgid "Moving an object relative to itself" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:418 msgid "" -"The transform, or inverse transform of an identity matrix will return the " -"position unchanged:" +"A common operation, especially in 3D games, is to move an object relative to " +"itself. For example, in first-person shooter games, you would want the " +"character to move forward (-Z axis) when you press :kbd:`W`." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:419 -msgid "Affine inverse" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:421 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:422 msgid "" -"The affine inverse is a matrix that does the inverse operation of another " -"matrix, no matter if the matrix has scale or the axis vectors are not " -"orthogonal. The affine inverse is calculated with the affine_inverse() " -"method:" +"Since the basis vectors are the orientation relative to the parent, and the " +"origin vector is the position relative to the parent, we can simply add " +"multiples of the basis vectors to move an object relative to itself." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:426 +msgid "This code moves an object 100 units to its own right:" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:439 +msgid "For moving in 3D, you would need to replace \"x\" with \"basis.x\"." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:441 -msgid "If the matrix is orthonormal, then:" +msgid "" +"In actual projects, you can use `translate_object_local` in 3D or " +"`move_local_x` and `move_local_y` in 2D to do this." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:445 +msgid "Applying transforms onto transforms" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:447 +msgid "" +"One of the most important things to know about transforms is how you can use " +"several of them together. A parent node's transform affects all of its " +"children. Let's dissect an example." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:451 +msgid "" +"In this image, the child node has a \"2\" after the component names to " +"distinguish them from the parent node. It might look a bit overwhelming with " +"so many numbers, but remember that each number is displayed twice (next to " +"the arrows and also in the matrices), and that almost half of the numbers " +"are zero." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:459 -msgid "Matrix multiplication" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:461 msgid "" -"Matrices can be multiplied. Multiplication of two matrices \"chains" -"\" (concatenates) their transforms." +"The only transformations going on here are that the parent node has been " +"given a scale of (2, 1), the child has been given a scale of (0.5, 0.5), and " +"both nodes have been given positions." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:464 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:463 msgid "" -"However, as per convention, multiplication takes place in reverse order." +"All child transformations are affected by the parent transformations. The " +"child has a scale of (0.5, 0.5), so you would expect it to be a 1:1 ratio " +"square, and it is, but only relative to the parent. The child's X vector " +"ends up being (1, 0) in world space, because it is scaled by the parent's " +"basis vectors. Similarly, the child node's `origin` vector is set to (1, 1), " +"but this actually moves it (2, 1) in world space, due to the parent node's " +"basis vectors." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:478 -msgid "To make it a little clearer, this:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:472 +msgid "" +"To calculate a child transform's world space transform manually, this is the " +"code we would use:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:491 -msgid "Is the same as:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:510 +msgid "" +"In actual projects, we can find the world transform of the child by applying " +"one transform onto another using the `*` operator:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:504 -msgid "However, this is not the same:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:532 +msgid "When multiplying matrices, order matters! Don't mix them up." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:517 -msgid "Because in matrix math, A * B is not the same as B * A." -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:520 -msgid "Multiplication by inverse" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:522 -msgid "Multiplying a matrix by its inverse, results in identity:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:534 +msgid "Lastly, applying the identity transform will always do nothing." msgstr "" #: ../../docs/tutorials/math/matrices_and_transforms.rst:536 -msgid "Multiplication by identity" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:538 -msgid "Multiplying a matrix by identity, will result in the unchanged matrix:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:552 -msgid "Matrix tips" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:554 msgid "" -"When using a transform hierarchy, remember that matrix multiplication is " -"reversed! To obtain the global transform for a hierarchy, do:" +"If you would like additional explanation, you should check out 3Blue1Brown's " +"excellent video about matrix composition: https://www.youtube.com/watch?" +"v=XkY2DOUCWMU" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:566 -msgid "For 3 levels:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:541 +msgid "Inverting a transformation matrix" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:577 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:543 msgid "" -"To make a matrix relative to the parent, use the affine inverse (or regular " -"inverse for orthonormal matrices)." +"The \"affine_inverse\" function returns a transform that \"undoes\" the " +"previous transform. This can be useful in some situations, but it's easier " +"to just provide a few examples." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:591 -msgid "Revert it just like the example above:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:604 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:547 msgid "" -"OK, hopefully this should be enough! Let's complete the tutorial by moving " -"to 3D matrices." +"Multiplying an inverse transform by the normal transform undoes all " +"transformations:" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:608 -msgid "Matrices & transforms in 3D" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:610 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:563 msgid "" -"As mentioned before, for 3D, we deal with 3 :ref:`Vector3 ` " -"vectors for the rotation matrix, and an extra one for the origin." +"Transforming a position by a transform and its inverse results in the same " +"position (same for \"xform_inv\"):" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:616 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:582 +msgid "How does it all work in 3D?" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:584 msgid "" -"Godot has a special type for a 3x3 matrix, named :ref:`Basis `. " -"It can be used to represent a 3D rotation and scale. Sub vectors can be " -"accessed as:" +"One of the great things about transformation matrices is that they work very " +"similarly between 2D and 3D transformations. All of the code and formulas " +"used above for 2D work the same in 3D, with 3 exceptions: the addition of a " +"third axis, that each axis is of type :ref:`class_Vector3`, and also that " +"Godot stores the :ref:`class_Basis` separately from the :ref:" +"`class_Transform`, since the math can get complex and it makes sense to " +"separate it." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:635 -msgid "Or, alternatively as:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:652 -msgid "The Identity Basis has the following values:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:656 -msgid "And can be accessed like this:" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:680 -msgid "Rotation in 3D" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:682 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:592 msgid "" -"Rotation in 3D is more complex than in 2D (translation and scale are the " -"same), because rotation is an implicit 2D operation. To rotate in 3D, an " -"*axis*, must be picked. Rotation, then, happens around this axis." +"All of the concepts for how translation, rotation, scale, and shearing work " +"in 3D are all the same compared to 2D. To scale, we take each component and " +"multiply it; to rotate, we change where each basis vector is pointing; to " +"translate, we manipulate the origin; and to shear, we change the basis " +"vectors to be non-perpendicular." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:686 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:600 msgid "" -"The axis for the rotation must be a *normal vector*. As in, a vector that " -"can point to any direction, but length must be one (1.0)." +"If you would like, it's a good idea to play around with transforms to get an " +"understanding of how they work. Godot allows you to edit 3D transform " +"matrices directly from the inspector. You can download this project which " +"has colored lines and cubes to help visualize the :ref:`class_Basis` vectors " +"and the origin in both 2D and 3D: https://github.com/godotengine/godot-demo-" +"projects/tree/master/misc/matrix_transform" msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:705 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:607 msgid "" -"To add the final component to the mix, Godot provides the :ref:`Transform " -"` type. Transform has two members:" +"Spatial's \"Matrix\" section in Godot 3.2's inspector displays the matrix as " +"transposed, with the columns horizontal and the rows vertical. This may be " +"changed to be less confusing in a future release of Godot." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:708 -msgid "*basis* (of type :ref:`Basis `)" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:709 -msgid "*origin* (of type :ref:`Vector3 `)" -msgstr "" - -#: ../../docs/tutorials/math/matrices_and_transforms.rst:711 +#: ../../docs/tutorials/math/matrices_and_transforms.rst:612 msgid "" -"Any 3D transform can be represented with Transform, and the separation of " -"basis and origin makes it easier to work translation and rotation separately." +"You cannot edit Node2D's transform matrix directly in Godot 3.2's inspector. " +"This may be changed in a future release of Godot." msgstr "" -#: ../../docs/tutorials/math/matrices_and_transforms.rst:715 -msgid "An example:" +#: ../../docs/tutorials/math/matrices_and_transforms.rst:615 +msgid "" +"If you would like additional explanation, you should check out 3Blue1Brown's " +"excellent video about 3D linear transformations: https://www.youtube.com/" +"watch?v=rHLEWRxRGiM" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:620 +msgid "Representing rotation in 3D (advanced)" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:622 +msgid "" +"The biggest difference between 2D and 3D transformation matrices is how you " +"represent rotation by itself without the basis vectors." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:625 +msgid "" +"With 2D, we have an easy way (atan2) to switch between a transformation " +"matrix and an angle. In 3D, we can't simply represent rotation as one " +"number. There is something called Euler angles, which can represent " +"rotations as a set of 3 numbers, however they are limited and not very " +"useful, except for trivial cases." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:631 +msgid "" +"In 3D we do not typically use angles, we either use a transformation basis " +"(used pretty much everywhere in Godot), or we use quaternions. Godot can " +"represent quaternions using the :ref:`class_Quat` struct. My suggestion to " +"you is to completely ignore how they work under-the-hood, because they are " +"very complicated and unintuitive." +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:637 +msgid "" +"However, if you really must know how it works, here are some great " +"resources, which you can follow in order:" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:640 +msgid "https://www.youtube.com/watch?v=mvmuCPvRoWQ" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:642 +msgid "https://www.youtube.com/watch?v=d4EgbgTm0Bg" +msgstr "" + +#: ../../docs/tutorials/math/matrices_and_transforms.rst:644 +msgid "https://eater.net/quaternions" msgstr "" #: ../../docs/tutorials/math/interpolation.rst:6 @@ -42208,8 +42590,8 @@ msgstr "" msgid "" "If you animate the wrong property, you can edit a track's path anytime. " "Double click on it and type the new path. Play the animation using the " -"\"Play from beginning\" button |Play from beginning| (Default shortcut: Shift" -"+D) to see the changes instantly." +"\"Play from beginning\" button |Play from beginning| (or pressing :kbd:" +"`Shift + D` on keyboard) to see the changes instantly." msgstr "" #: ../../docs/tutorials/animation/introduction_2d.rst:106 @@ -42728,8 +43110,8 @@ msgstr "" #: ../../docs/tutorials/animation/cutout_animation.rst:82 msgid "" "This looks good. Let's see if our hierarchy works as a skeleton by rotating " -"the torso. We can do this be pressing ``E`` to enter rotate mode, and " -"dragging with the left mouse button. To exit rotate mode hit ``ESC``." +"the torso. We can do this be pressing :kbd:`E` to enter rotate mode, and " +"dragging with the left mouse button. To exit rotate mode hit :kbd:`ESC`." msgstr "" #: ../../docs/tutorials/animation/cutout_animation.rst:88 @@ -42754,7 +43136,7 @@ msgstr "" #: ../../docs/tutorials/animation/cutout_animation.rst:103 msgid "" "The pivot can also be adjusted *visually*. While hovering over the desired " -"pivot point, press the \"v\" key to move the pivot there for the selected " +"pivot point, press :kbd:`V` to move the pivot there for the selected " "Sprite. There is also a tool in the tool bar that has a similar function." msgstr "" @@ -44236,7 +44618,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/inputs/inputevent.rst:203 -#: ../../docs/tutorials/inputs/input_examples.rst:107 +#: ../../docs/tutorials/inputs/input_examples.rst:140 msgid "InputMap" msgstr "" @@ -44290,24 +44672,24 @@ msgstr "" msgid "Examples:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:45 +#: ../../docs/tutorials/inputs/input_examples.rst:62 msgid "" "This gives you the flexibility to mix-and-match the type of input processing " "you do." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:48 +#: ../../docs/tutorials/inputs/input_examples.rst:65 msgid "" "For the remainder of this tutorial, we'll focus on capturing individual " "events in ``_input()``." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:52 +#: ../../docs/tutorials/inputs/input_examples.rst:69 #: ../../docs/tutorials/gui/custom_gui_controls.rst:118 msgid "Input events" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:54 +#: ../../docs/tutorials/inputs/input_examples.rst:71 msgid "" "Input events are objects that inherit from :ref:`InputEvent " "`. Depending on the event type, the object will contain " @@ -44315,13 +44697,13 @@ msgid "" "like, add a Node and attach the following script:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:67 +#: ../../docs/tutorials/inputs/input_examples.rst:91 msgid "" "As you press keys, move the mouse, and perform other inputs, you'll see each " "event scroll by in the output window. Here's an example of the output:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:81 +#: ../../docs/tutorials/inputs/input_examples.rst:105 msgid "" "As you can see, the results are very different for the different types of " "input. Key events are even printed as their key symbols. For example, let's " @@ -44329,43 +44711,44 @@ msgid "" "inherits from the following classes:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:85 +#: ../../docs/tutorials/inputs/input_examples.rst:109 msgid "" ":ref:`InputEvent ` - the base class for all input events" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:86 +#: ../../docs/tutorials/inputs/input_examples.rst:110 msgid "" ":ref:`InputEventWithModifiers ` - adds the " -"ability to check if modifiers are pressed, such as ``Shift`` or ``Alt``." +"ability to check if modifiers are pressed, such as :kbd:`Shift` or :kbd:" +"`Alt`." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:87 +#: ../../docs/tutorials/inputs/input_examples.rst:111 msgid "" ":ref:`InputEventMouse ` - adds mouse event " "properties, such as ``position``" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:88 +#: ../../docs/tutorials/inputs/input_examples.rst:112 msgid "" ":ref:`InputEventMouseButton ` - contains the " "index of the button that was pressed, whether it was a double-click, etc." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:90 +#: ../../docs/tutorials/inputs/input_examples.rst:114 msgid "" "It's a good idea to keep the class reference open while you're working with " "events so you can check the event type's available properties and methods." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:94 +#: ../../docs/tutorials/inputs/input_examples.rst:118 msgid "" "You can encounter errors if you try to access a property on an input type " "that doesn't contain it - calling ``position`` on ``InputEventKey`` for " "example. To avoid this, make sure to test the event type first:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:109 +#: ../../docs/tutorials/inputs/input_examples.rst:142 msgid "" "The :ref:`InputMap ` is the most flexible way to handle a " "variety of inputs. You use this by creating named input *actions*, to which " @@ -44375,54 +44758,54 @@ msgid "" "and select the InputMap tab:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:119 +#: ../../docs/tutorials/inputs/input_examples.rst:152 msgid "Capturing actions" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:121 +#: ../../docs/tutorials/inputs/input_examples.rst:154 msgid "" "Once you've defined your actions, you can process them in your scripts using " "``is_action_pressed()`` and ``is_action_released()`` by passing the name of " "the action you're looking for:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:133 +#: ../../docs/tutorials/inputs/input_examples.rst:176 msgid "Keyboard events" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:135 +#: ../../docs/tutorials/inputs/input_examples.rst:178 msgid "" "Keyboard events are captured in :ref:`InputEventKey `. " "While it's recommended to use input actions instead, there may be cases " "where you want to specifically look at key events. For this example, let's " -"check for the \"T\" key:" +"check for the :kbd:`T`:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:148 -#: ../../docs/tutorials/inputs/input_examples.rst:171 +#: ../../docs/tutorials/inputs/input_examples.rst:204 +#: ../../docs/tutorials/inputs/input_examples.rst:242 msgid "" "See :ref:`@GlobalScope_KeyList ` for a list of " "scancode constants." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:152 +#: ../../docs/tutorials/inputs/input_examples.rst:208 msgid "Keyboard modifiers" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:154 +#: ../../docs/tutorials/inputs/input_examples.rst:210 msgid "" "Modifier properties are inherited from :ref:`InputEventWithModifiers " "`. This allows you to check for modifier " "combinations using boolean properties. Let's imagine you want one thing to " -"happen when the \"T\" key is pressed, but something different when it's " -"\"Shift+T\":" +"happen when the :kbd:`T` is pressed, but something different when it's :kbd:" +"`Shift + T`:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:175 +#: ../../docs/tutorials/inputs/input_examples.rst:246 msgid "Mouse events" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:177 +#: ../../docs/tutorials/inputs/input_examples.rst:248 msgid "" "Mouse events stem from the :ref:`InputEventMouse ` " "class, and are separated into two types: :ref:`InputEventMouseButton " @@ -44431,11 +44814,11 @@ msgid "" "will contain a ``position`` property." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:183 +#: ../../docs/tutorials/inputs/input_examples.rst:254 msgid "Mouse buttons" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:185 +#: ../../docs/tutorials/inputs/input_examples.rst:256 msgid "" "Capturing mouse buttons is very similar to handling key events. :ref:" "`@GlobalScope_ButtonList ` contains a list of " @@ -44445,28 +44828,28 @@ msgid "" "``BUTTON_WHEEL_DOWN`` being separate events." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:202 +#: ../../docs/tutorials/inputs/input_examples.rst:291 msgid "Mouse motion" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:204 +#: ../../docs/tutorials/inputs/input_examples.rst:293 msgid "" ":ref:`InputEventMouseMotion ` events occur " "whenever the mouse moves. You can find the move's distance with the " "``relative`` property." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:208 +#: ../../docs/tutorials/inputs/input_examples.rst:297 msgid "" "Here's an example using mouse events to drag-and-drop a :ref:`Sprite " "` node:" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:234 +#: ../../docs/tutorials/inputs/input_examples.rst:355 msgid "Touch events" msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:236 +#: ../../docs/tutorials/inputs/input_examples.rst:357 msgid "" "If you are using a touchscreen device, you can generate touch events. :ref:" "`InputEventScreenTouch ` is equivalent to a " @@ -44474,7 +44857,7 @@ msgid "" "` works much the same as mouse motion." msgstr "" -#: ../../docs/tutorials/inputs/input_examples.rst:241 +#: ../../docs/tutorials/inputs/input_examples.rst:362 msgid "" "To test your touch events on a non-touchscreen device, open Project Settings " "and go to the \"Input Devices/Pointing\" section. Enable \"Emulate Touch " @@ -51204,7 +51587,7 @@ msgid "Void datatype, useful only for functions that return nothing." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:25 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:538 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:610 msgid "**bool**" msgstr "" @@ -51237,7 +51620,7 @@ msgid "Four-component vector of booleans." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:33 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:540 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:612 msgid "**int**" msgstr "" @@ -51302,7 +51685,7 @@ msgid "Four-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:49 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:542 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:614 msgid "**float**" msgstr "" @@ -51311,7 +51694,7 @@ msgid "Floating point scalar." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:51 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:544 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:616 msgid "**vec2**" msgstr "" @@ -51320,7 +51703,7 @@ msgid "Two-component vector of floating point values." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:53 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:546 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:618 msgid "**vec3**" msgstr "" @@ -51329,8 +51712,8 @@ msgid "Three-component vector of floating point values." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:55 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:515 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:620 msgid "**vec4**" msgstr "" @@ -51355,8 +51738,8 @@ msgid "3x3 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:61 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:552 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:622 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:624 msgid "**mat4**" msgstr "" @@ -51365,12 +51748,12 @@ msgid "4x4 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:63 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:519 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:521 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 msgid "**sampler2D**" msgstr "" @@ -51522,18 +51905,18 @@ msgid "" "explained:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:170 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:174 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:116 msgid "Precision" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:172 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:176 msgid "" "It is possible to add precision modifiers to datatypes; use them for " "uniforms, variables, arguments and varyings:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:181 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:185 msgid "" "Using lower precision for some operations can speed up the math involved (at " "the cost of less precision). This is rarely needed in the vertex processor " @@ -51541,7 +51924,7 @@ msgid "" "useful in the fragment processor." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:185 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:189 msgid "" "Keep in mind that some architectures (mainly mobile) benefit a lot from " "this, but are also restricted (conversion between precisions has a cost). " @@ -51551,45 +51934,45 @@ msgid "" "*really* need to." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:193 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:197 msgid "" "Arrays are containers for multiple variables of a similar type. Note: As of " "Godot 3.2, only local and varying arrays have been implemented." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:197 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:201 msgid "Local arrays" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:199 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:203 msgid "" "Local arrays are declared in functions. They can use all of the allowed " "datatypes, except samplers. The array declaration follows a C-style syntax: " "``typename + identifier + [array size]``." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:208 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:212 msgid "They can be initialized at the beginning like:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:220 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:224 msgid "" "You can declare multiple arrays (even with different sizes) in one " "expression:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:230 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:234 msgid "To access an array element, use the indexing syntax:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:240 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:244 msgid "" "Arrays also have a built-in function ``.length()`` (not to be confused with " "the built-in ``length()`` function). It doesn't accept any parameters and " "will return the array's size." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:249 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:253 msgid "" "Note: If you use an index below 0 or greater than array size - the shader " "will crash and break rendering. To prevent this, use ``length()``, ``if``, " @@ -51599,7 +51982,7 @@ msgid "" "this crash." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:254 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:258 msgid "" "Use the ``const`` keyword before the variable declaration to make that " "variable immutable, which means that it cannot be modified. All basic types, " @@ -51608,18 +51991,18 @@ msgid "" "at their declaration." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:264 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:268 msgid "" "Constants cannot be modified and additionally cannot have hints, but " "multiple of them (if they have the same type) can be declared in a single " "expression e.g" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:270 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:274 msgid "Similar to variables, arrays can also be declared with ``const``." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:280 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:284 msgid "" "Constants can be declared both globally (outside of any function) or locally " "(inside a function). Global constants are useful when you want to have " @@ -51628,63 +52011,91 @@ msgid "" "they are not accessible outside of the shader." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:292 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:295 +msgid "Structs" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:297 +msgid "" +"Structs are compound types which can be used for better abstaction of shader " +"code. You can declare them at the global scope like:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:307 +msgid "After declaration, you can instantiate and initialize them like:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:319 +msgid "Or use struct constructor for same purpose:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:325 +msgid "" +"Structs may contain other struct or array, you can also instance them as " +"global constant:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:344 +msgid "You can also pass them to functions:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:364 msgid "" "Godot shading language supports the same set of operators as GLSL ES 3.0. " "Below is the list of them in precedence order:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:295 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:367 msgid "Precedence" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:295 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:367 msgid "Class" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:295 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:367 msgid "Operator" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:297 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:369 msgid "1 (highest)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:297 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:369 msgid "parenthetical grouping" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:297 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:369 msgid "**()**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:299 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:371 #: ../../docs/tutorials/misc/binary_serialization_api.rst:29 msgid "2" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:299 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:371 msgid "unary" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:299 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:371 msgid "**+, -, !, ~**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:301 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:373 #: ../../docs/tutorials/misc/binary_serialization_api.rst:31 msgid "3" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:301 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:373 msgid "multiplicative" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:301 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:373 msgid "**/, \\*, %**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:303 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:375 #: ../../docs/tutorials/misc/binary_serialization_api.rst:33 #: ../../docs/tutorials/misc/binary_serialization_api.rst:94 #: ../../docs/tutorials/misc/binary_serialization_api.rst:103 @@ -51772,54 +52183,54 @@ msgstr "" msgid "4" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:303 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:375 msgid "additive" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:303 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:375 msgid "**+, -**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:305 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:377 #: ../../docs/tutorials/misc/binary_serialization_api.rst:35 msgid "5" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:305 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:377 msgid "bit-wise shift" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:305 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:377 msgid "**<<, >>**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:307 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:379 #: ../../docs/tutorials/misc/binary_serialization_api.rst:37 msgid "6" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:307 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:379 msgid "relational" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:307 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:379 msgid "**<, >, <=, >=**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:309 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:381 #: ../../docs/tutorials/misc/binary_serialization_api.rst:39 msgid "7" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:309 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:381 msgid "equality" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:309 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:381 msgid "**==, !=**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:311 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:383 #: ../../docs/tutorials/misc/binary_serialization_api.rst:41 #: ../../docs/tutorials/misc/binary_serialization_api.rst:123 #: ../../docs/tutorials/misc/binary_serialization_api.rst:136 @@ -51837,180 +52248,180 @@ msgstr "" msgid "8" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:311 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:383 msgid "bit-wise and" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:311 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:383 msgid "**&**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:313 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:385 #: ../../docs/tutorials/misc/binary_serialization_api.rst:43 msgid "9" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:313 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:385 msgid "bit-wise exclusive or" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:313 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:385 msgid "**^**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:315 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:387 #: ../../docs/tutorials/misc/binary_serialization_api.rst:45 msgid "10" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:315 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:387 msgid "bit-wise inclusive or" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:315 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:387 msgid "**|**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:317 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:389 #: ../../docs/tutorials/misc/binary_serialization_api.rst:47 msgid "11" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:317 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:389 msgid "logical and" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:317 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:389 msgid "**&&**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:319 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:391 msgid "12 (lowest)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:319 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:391 msgid "logical inclusive or" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:319 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:391 msgid "**||**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:323 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:395 msgid "Flow control" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:325 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:397 msgid "Godot Shading language supports the most common types of flow control:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:365 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:437 msgid "" "Keep in mind that, in modern GPUs, an infinite loop can exist and can freeze " "your application (including editor). Godot can't protect you from this, so " "be careful not to make this mistake!" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:369 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:441 msgid "Discarding" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:371 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:443 msgid "" "Fragment and light functions can use the **discard** keyword. If used, the " "fragment is discarded and nothing is written." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:376 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:448 msgid "" "It is possible to define functions in a Godot shader. They use the following " "syntax:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:391 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:463 msgid "" "You can only use functions that have been defined above (higher in the " "editor) the function from which you are calling them." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:394 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:466 msgid "Function arguments can have special qualifiers:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:396 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:468 msgid "**in**: Means the argument is only for reading (default)." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:397 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:469 msgid "**out**: Means the argument is only for writing." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:398 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:470 msgid "**inout**: Means the argument is fully passed via reference." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:400 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:472 msgid "Example below:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:409 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:481 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:57 msgid "Varyings" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:411 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:483 msgid "" "To send data from the vertex to the fragment processor function, *varyings* " "are used. They are set for every primitive vertex in the *vertex processor*, " "and the value is interpolated for every pixel in the fragment processor." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:428 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:500 msgid "Varying can also be an array:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:445 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:517 msgid "Interpolation qualifiers" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:447 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:519 msgid "" "Certain values are interpolated during the shading pipeline. You can modify " "how these interpolations are done by using *interpolation qualifiers*." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:464 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:536 msgid "There are two possible interpolation qualifiers:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:467 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 msgid "Qualifier" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:469 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 msgid "**flat**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:469 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 msgid "The value is not interpolated." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:471 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:543 msgid "**smooth**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:471 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:543 msgid "" "The value is interpolated in a perspective-correct fashion. This is the " "default." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:476 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 #: ../../docs/tutorials/shading/your_first_shader/your_first_spatial_shader.rst:192 msgid "Uniforms" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:478 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 msgid "" "Passing values to shaders is possible. These are global to the whole shader " "and are called *uniforms*. When a shader is later assigned to a material, " @@ -52018,939 +52429,939 @@ msgid "" "written from within the shader." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:488 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:560 msgid "" "You can set uniforms in the editor in the material. Or you can set them " "through GDScript:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:494 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:566 msgid "" "The first argument to ``set_shader_param`` is the name of the uniform in the " "shader. It must match *exactly* to the name of the uniform in the shader or " "else it will not be recognized." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:497 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:569 msgid "" "Any GLSL type except for *void* can be a uniform. Additionally, Godot " "provides optional shader hints to make the compiler understand for what the " "uniform is used." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:508 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:580 msgid "" "It's important to understand that textures that are supplied as color " "require hints for proper sRGB->linear conversion (i.e. ``hint_albedo``), as " "Godot’s 3D engine renders in linear color space." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:510 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:582 msgid "Full list of hints below:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:513 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 msgid "Hint" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:515 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 msgid "hint_color" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:515 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 msgid "Used as color" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:517 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 msgid "**int, float**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:517 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 msgid "hint_range(min,max [,step] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:517 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 msgid "Used as range (with min/max/step)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:519 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 msgid "hint_albedo" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:519 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 msgid "Used as albedo color, default white" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:521 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 msgid "hint_black_albedo" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:521 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 msgid "Used as albedo color, default black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 msgid "hint_normal" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 msgid "Used as normalmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 msgid "hint_white" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 msgid "As value, default to white." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 msgid "hint_black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 msgid "As value, default to black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 msgid "hint_aniso" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 msgid "As flowmap, default to right." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:532 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:604 msgid "" "GDScript uses different variable types than GLSL does, so when passing " "variables from GDScript to shaders, Godot converts the type automatically. " "Below is a table of the corresponding types:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:536 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:608 msgid "GDScript type" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:536 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:608 msgid "GLSL type" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:544 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:616 msgid "**Vector2**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:546 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:618 msgid "**Vector3**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:620 msgid "**Color**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:622 msgid "**Transform**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:552 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:624 msgid "**Transform2D**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:555 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 msgid "" "Be careful when setting shader uniforms from GDScript, no error will be " "thrown if the type does not match. Your shader will just exhibit undefined " "behaviour." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:558 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:630 msgid "Uniforms can also be assigned default values:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:568 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:640 msgid "Built-in functions" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:570 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:642 msgid "" "A large number of built-in functions are supported, conforming to GLSL ES " "3.0. When vec_type (float), vec_int_type, vec_uint_type, vec_bool_type " "nomenclature is used, it can be scalar or vector." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:573 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 msgid "" "For a list of the functions that are not available in the GLES2 backend, " "please see the :ref:`Differences between GLES2 and GLES3 doc " "`." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:135 msgid "Function" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 msgid "vec_type **radians** ( vec_type degrees )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 msgid "Convert degrees to radians" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 msgid "vec_type **degrees** ( vec_type radians )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 msgid "Convert radians to degrees" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 msgid "vec_type **sin** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 msgid "Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 msgid "vec_type **cos** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 msgid "Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 msgid "vec_type **tan** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 msgid "Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 msgid "vec_type **asin** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:589 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 msgid "Arc-Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 msgid "vec_type **acos** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:591 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 msgid "Arc-Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 msgid "vec_type **atan** ( vec_type y_over_x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:593 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 msgid "Arc-Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 msgid "vec_type **atan** ( vec_type y, vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 msgid "Arc-Tangent to convert vector to angle" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 msgid "vec_type **sinh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:597 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 msgid "Hyperbolic-Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 msgid "vec_type **cosh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 msgid "Hyperbolic-Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 msgid "vec_type **tanh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 msgid "Hyperbolic-Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:603 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 msgid "vec_type **asinh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:603 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 msgid "Inverse-Hyperbolic-Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:605 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 msgid "vec_type **acosh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:605 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 msgid "Inverse-Hyperbolic-Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:607 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 msgid "vec_type **atanh** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:607 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 msgid "Inverse-Hyperbolic-Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:609 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 msgid "vec_type **pow** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:609 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 msgid "Power" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 msgid "vec_type **exp** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 msgid "Base-e Exponential" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:613 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 msgid "vec_type **exp2** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:613 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 msgid "Base-2 Exponential" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:615 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 msgid "vec_type **log** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:615 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 msgid "Natural Logarithm" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:617 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 msgid "vec_type **log2** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:617 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 msgid "Base-2 Logarithm" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:619 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 msgid "vec_type **sqrt** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:619 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 msgid "Square Root" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:621 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 msgid "vec_type **inversesqrt** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:621 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 msgid "Inverse Square Root" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:623 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 msgid "vec_type **abs** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:623 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:625 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 msgid "Absolute" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:625 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 msgid "ivec_type **abs** ( ivec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 msgid "vec_type **sign** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 msgid "Sign" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 msgid "ivec_type **sign** ( ivec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 msgid "vec_type **floor** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 msgid "Floor" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:633 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 msgid "vec_type **round** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:633 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 msgid "Round" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:635 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 msgid "vec_type **roundEven** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:635 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 msgid "Round nearest even" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:637 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 msgid "vec_type **trunc** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:637 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 msgid "Truncation" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 msgid "vec_type **ceil** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 msgid "Ceil" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:641 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 msgid "vec_type **fract** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:641 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 msgid "Fractional" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 msgid "vec_type **mod** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 msgid "Remainder" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 msgid "vec_type **mod** ( vec_type x , float y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:137 msgid "vec_type **modf** ( vec_type x, out vec_type i )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 msgid "Fractional of x, with i has integer part" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 msgid "vec_type **min** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 msgid "Minimum" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 msgid "vec_type **max** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 msgid "Maximum" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 msgid "vec_type **clamp** ( vec_type x, vec_type min, vec_type max )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 msgid "Clamp to Min-Max" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 msgid "vec_type **mix** ( float a, float b, float c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 msgid "Linear Interpolate" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 msgid "vec_type **mix** ( vec_type a, vec_type b, float c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 msgid "Linear Interpolate (Scalar Coef.)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 msgid "vec_type **mix** ( vec_type a, vec_type b, vec_type c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 msgid "Linear Interpolate (Vector Coef.)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 msgid "vec_type **mix** ( vec_type a, vec_type b, bvec_type c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 msgid "Linear Interpolate (Boolean-Vector Selection)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 msgid "vec_type **step** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 msgid "``b[i] < a[i] ? 0.0 : 1.0``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 msgid "vec_type **step** ( float a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 msgid "``b[i] < a ? 0.0 : 1.0``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 msgid "vec_type **smoothstep** ( vec_type a, vec_type b, vec_type c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 msgid "Hermite Interpolate" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 msgid "vec_type **smoothstep** ( float a, float b, vec_type c )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 msgid "bvec_type **isnan** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 msgid "Scalar, or vector component being NaN" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 msgid "bvec_type **isinf** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 msgid "Scalar, or vector component being INF" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 msgid "ivec_type **floatBitsToInt** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 msgid "Float->Int bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 msgid "uvec_type **floatBitsToUint** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 msgid "Float->UInt bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 msgid "vec_type **intBitsToFloat** ( ivec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 msgid "Int->Float bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 msgid "vec_type **uintBitsToFloat** ( uvec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 msgid "UInt->Float bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 msgid "float **length** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 msgid "Vector Length" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 msgid "float **distance** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 msgid "Distance between vectors i.e ``length(a - b)``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 msgid "float **dot** ( vec_type a, vec_type b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 msgid "Dot Product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 msgid "vec3 **cross** ( vec3 a, vec3 b )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 msgid "Cross Product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 msgid "vec_type **normalize** ( vec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 msgid "Normalize to unit length" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 msgid "vec3 **reflect** ( vec3 I, vec3 N )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 msgid "Reflect" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 msgid "vec3 **refract** ( vec3 I, vec3 N, float eta )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 msgid "Refract" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 msgid "vec_type **faceforward** ( vec_type N, vec_type I, vec_type Nref )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 msgid "If dot(Nref, I) < 0, return N, otherwise –N" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 msgid "mat_type **matrixCompMult** ( mat_type x, mat_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 msgid "Matrix Component Multiplication" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 msgid "mat_type **outerProduct** ( vec_type column, vec_type row )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 msgid "Matrix Outer Product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 msgid "mat_type **transpose** ( mat_type m )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 msgid "Transpose Matrix" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 msgid "float **determinant** ( mat_type m )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 msgid "Matrix Determinant" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 msgid "mat_type **inverse** ( mat_type m )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 msgid "Inverse Matrix" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 msgid "bvec_type **lessThan** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 msgid "Bool vector cmp on < int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 msgid "bvec_type **greaterThan** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 msgid "Bool vector cmp on > int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 msgid "bvec_type **lessThanEqual** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 msgid "Bool vector cmp on <= int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 msgid "bvec_type **greaterThanEqual** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 msgid "Bool vector cmp on >= int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 msgid "bvec_type **equal** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 msgid "Bool vector cmp on == int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 msgid "bvec_type **notEqual** ( vec_type x, vec_type y )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 msgid "Bool vector cmp on != int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 msgid "bool **any** ( bvec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 msgid "Any component is ``true``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 msgid "bool **all** ( bvec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 msgid "All components are ``true``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:797 msgid "bvec_type **not** ( bvec_type x )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:797 msgid "Invert boolean vector" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:799 #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:147 msgid "ivec2 **textureSize** ( sampler2D_type s, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:799 msgid "Get the size of a 2D texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:801 msgid "ivec3 **textureSize** ( sampler2DArray_type s, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:801 msgid "Get the size of a 2D texture array" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:803 msgid "ivec3 **textureSize** ( sampler3D s, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:803 msgid "Get the size of a 3D texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:805 #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:149 msgid "ivec2 **textureSize** ( samplerCube s, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:805 msgid "Get the size of a Cube texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:807 msgid "vec4_type **texture** ( sampler2D_type s, vec2 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:807 msgid "Perform a 2D texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:809 msgid "" "vec4_type **texture** ( sampler2DArray_type s, vec3 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:809 msgid "Perform a 2D texture array read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:811 msgid "vec4_type **texture** ( sampler3D_type s, vec3 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:811 msgid "Perform a 3D texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:813 msgid "vec4 **texture** ( samplerCube s, vec3 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:813 msgid "Perform an Cube texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:815 msgid "vec4_type **textureProj** ( sampler2D_type s, vec3 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:815 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:817 msgid "Perform a 2D texture read with projection" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:817 msgid "vec4_type **textureProj** ( sampler2D_type s, vec4 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:819 msgid "vec4_type **textureProj** ( sampler3D_type s, vec4 uv [, float bias] )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:819 msgid "Perform a 3D texture read with projection" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:821 msgid "vec4_type **textureLod** ( sampler2D_type s, vec2 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:821 msgid "Perform a 2D texture read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:823 msgid "vec4_type **textureLod** ( sampler2DArray_type s, vec3 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:823 msgid "Perform a 2D texture array read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:825 msgid "vec4_type **textureLod** ( sampler3D_type s, vec3 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:825 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:827 msgid "Perform a 3D texture read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:827 msgid "vec4 **textureLod** ( samplerCube s, vec3 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:829 msgid "vec4_type **textureProjLod** ( sampler2D_type s, vec3 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:829 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:831 msgid "Perform a 2D texture read with projection/lod" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:831 msgid "vec4_type **textureProjLod** ( sampler2D_type s, vec4 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:833 msgid "vec4_type **textureProjLod** ( sampler3D_type s, vec4 uv, float lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:833 msgid "Perform a 3D texture read with projection/lod" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:835 msgid "vec4_type **texelFetch** ( sampler2D_type s, ivec2 uv, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:835 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:837 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:839 msgid "Fetch a single texel using integer coords" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:837 msgid "vec4_type **texelFetch** ( sampler2DArray_type s, ivec3 uv, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:839 msgid "vec4_type **texelFetch** ( sampler3D_type s, ivec3 uv, int lod )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:841 #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:161 msgid "vec_type **dFdx** ( vec_type p )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:841 msgid "Derivative in x using local differencing" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:843 #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:163 msgid "vec_type **dFdy** ( vec_type p )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:843 msgid "Derivative in y using local differencing" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:845 #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:165 msgid "vec_type **fwidth** ( vec_type p )" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:845 msgid "Sum of absolute derivative in x and y" msgstr "" @@ -57233,16 +57644,17 @@ msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:34 msgid "" -"More about TCP/IP, UDP, and networking: https://gafferongames.com/post/" -"udp_vs_tcp/" +"More about TCP/IP, UDP, and networking: https://web.archive.org/" +"web/20190406162102/https://gafferongames.com/post/udp_vs_tcp/" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:37 msgid "" "Gaffer On Games has a lot of useful articles about networking in Games " -"(`here `__), including the " -"comprehensive `introduction to networking models in games `__), including the comprehensive `introduction to " +"networking models in games `__." msgstr "" @@ -57284,10 +57696,10 @@ msgstr "" msgid "" "Godot uses a mid-level object :ref:`NetworkedMultiplayerPeer " "`. This object is not meant to be created " -"directly, but is designed so that several implementations can provide it:" +"directly, but is designed so that several implementations can provide it." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:64 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:62 msgid "" "This object extends from :ref:`PacketPeer `, so it " "inherits all the useful methods for serializing, sending and receiving data. " @@ -57295,98 +57707,101 @@ msgid "" "includes signals that will let you know when peers connect or disconnect." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:66 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:64 msgid "" "This class interface can abstract most types of network layers, topologies " "and libraries. By default, Godot provides an implementation based on ENet (:" -"ref:`NetworkedMultiplayerEnet `), but this " -"could be used to implement mobile APIs (for adhoc WiFi, Bluetooth) or custom " -"device/console-specific networking APIs." +"ref:`NetworkedMultiplayerEnet `), one based " +"on WebRTC (:ref:`WebRTCMultiplayer `), and one " +"based on WebSocket (:ref:`WebSocketMultiplayerPeer " +"`), but this could be used to implement " +"mobile APIs (for adhoc WiFi, Bluetooth) or custom device/console-specific " +"networking APIs." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:69 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:70 msgid "" "For most common cases, using this object directly is discouraged, as Godot " "provides even higher level networking facilities. Yet it is made available " "in case a game has specific needs for a lower level API." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:73 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:74 msgid "Initializing the network" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:75 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:76 msgid "" "The object that controls networking in Godot is the same one that controls " "everything tree-related: :ref:`SceneTree `." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:77 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:78 msgid "" "To initialize high level networking, the SceneTree must be provided a " "NetworkedMultiplayerPeer object." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:79 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:80 msgid "" "To create that object, it first has to be initialized as a server or client." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:81 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:82 msgid "" "Initializing as a server, listening on the given port, with a given maximum " "number of peers:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:89 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:90 msgid "Initializing as a client, connecting to a given IP and port:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:97 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:98 msgid "Get the previously set network peer:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:103 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:104 msgid "Checking whether the tree is initialized as a server or client:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:109 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:110 msgid "Terminating the networking feature:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:115 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:116 msgid "" "(Although it may make sense to send a message first to let the other peers " "know you're going away instead of letting the connection close or timeout, " "depending on your game.)" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:118 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:119 msgid "Managing connections" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:120 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:121 msgid "" "Some games accept connections at any time, others during the lobby phase. " "Godot can be requested to no longer accept connections at any point (see " -"`set_refuse_new_network_connections(bool)` and related methods on :ref:" +"``set_refuse_new_network_connections(bool)`` and related methods on :ref:" "`SceneTree `). To manage who connects, Godot provides the " "following signals in SceneTree:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:123 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:124 msgid "Server and Clients:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:125 -msgid "`network_peer_connected(int id)`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:126 -msgid "`network_peer_disconnected(int id)`" +msgid "``network_peer_connected(int id)``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:128 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:127 +msgid "``network_peer_disconnected(int id)``" +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:129 msgid "" "The above signals are called on every peer connected to the server " "(including on the server) when a new peer connects or disconnects. Clients " @@ -57399,23 +57814,23 @@ msgid "" "IDs to send messages only to certain peers." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:134 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:135 msgid "Clients:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:136 -msgid "`connected_to_server`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:137 -msgid "`connection_failed`" +msgid "``connected_to_server``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:138 -msgid "`server_disconnected`" +msgid "``connection_failed``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:140 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:139 +msgid "``server_disconnected``" +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:141 msgid "" "Again, all these functions are mainly useful for lobby management or for " "adding/removing players on the fly. For these tasks, the server clearly has " @@ -57424,7 +57839,7 @@ msgid "" "g. their names, stats, etc)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:144 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:145 msgid "" "Lobbies can be implemented any way you want, but the most common way is to " "use a node with the same name across scenes in all peers. Generally, an " @@ -57432,70 +57847,70 @@ msgid "" "e.g. \"/root/lobby\"." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:148 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:149 msgid "RPC" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:150 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:151 msgid "" "To communicate between peers, the easiest way is to use RPCs (remote " "procedure calls). This is implemented as a set of functions in :ref:`Node " "`:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:153 -msgid "`rpc(\"function_name\", )`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:154 -msgid "`rpc_id(,\"function_name\", )`" +msgid "``rpc(\"function_name\", )``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:155 -msgid "`rpc_unreliable(\"function_name\", )`" +msgid "``rpc_id(,\"function_name\", )``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:156 -msgid "`rpc_unreliable_id(, \"function_name\", )`" +msgid "``rpc_unreliable(\"function_name\", )``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:158 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:157 +msgid "``rpc_unreliable_id(, \"function_name\", )``" +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:159 msgid "Synchronizing member variables is also possible:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:160 -msgid "`rset(\"variable\", value)`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:161 -msgid "`rset_id(, \"variable\", value)`" +msgid "``rset(\"variable\", value)``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:162 -msgid "`rset_unreliable(\"variable\", value)`" +msgid "``rset_id(, \"variable\", value)``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:163 -msgid "`rset_unreliable_id(, \"variable\", value)`" +msgid "``rset_unreliable(\"variable\", value)``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:165 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:164 +msgid "``rset_unreliable_id(, \"variable\", value)``" +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:166 msgid "Functions can be called in two fashions:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:167 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:168 msgid "" "Reliable: the function call will arrive no matter what, but may take longer " "because it will be re-transmitted in case of failure." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:168 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:169 msgid "" "Unreliable: if the function call does not arrive, it will not be re-" "transmitted; but if it arrives, it will do it quickly." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:170 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:171 msgid "" "In most cases, reliable is desired. Unreliable is mostly useful when " "synchronizing object positions (sync must happen constantly, and if a packet " @@ -57504,29 +57919,29 @@ msgid "" "even if it was resent reliably)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:173 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:174 msgid "" -"There is also the `get_rpc_sender_id` function in `SceneTree`, which can be " -"used to check which peer (or peer ID) sent an RPC." +"There is also the ``get_rpc_sender_id`` function in ``SceneTree``, which can " +"be used to check which peer (or peer ID) sent an RPC." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:176 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:177 msgid "Back to lobby" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:178 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:179 msgid "" "Let's get back to the lobby. Imagine that each player that connects to the " "server will tell everyone about it." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:224 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:225 msgid "" "You might have already noticed something different, which is the usage of " -"the `remote` keyword on the `register_player` function:" +"the ``remote`` keyword on the ``register_player`` function:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:230 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:231 msgid "" "This keyword has two main uses. The first is to let Godot know that this " "function can be called from RPC. If no keywords are added, Godot will block " @@ -57535,48 +57950,49 @@ msgid "" "client's system)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:234 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:235 msgid "" "The second use is to specify how the function will be called via RPC. There " "are four different keywords:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:236 -msgid "`remote`" -msgstr "" - #: ../../docs/tutorials/networking/high_level_multiplayer.rst:237 -msgid "`remotesync`" +msgid "``remote``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:238 -msgid "`master`" +msgid "``remotesync``" msgstr "" #: ../../docs/tutorials/networking/high_level_multiplayer.rst:239 -msgid "`puppet`" +msgid "``master``" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:241 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:240 +msgid "``puppet``" +msgstr "" + +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:242 msgid "" -"The `remote` keyword means that the `rpc()` call will go via network and " +"The ``remote`` keyword means that the ``rpc()`` call will go via network and " "execute remotely." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:243 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:244 msgid "" -"The `remotesync` keyword means that the `rpc()` call will go via network and " -"execute remotely, but will also execute locally (do a normal function call)." +"The ``remotesync`` keyword means that the ``rpc()`` call will go via network " +"and execute remotely, but will also execute locally (do a normal function " +"call)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:245 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:246 msgid "" "The others will be explained further down. Note that you could also use the " -"`get_rpc_sender_id` function on `SceneTree` to check which peer actually " -"made the RPC call to `register_player`." +"``get_rpc_sender_id`` function on ``SceneTree`` to check which peer actually " +"made the RPC call to ``register_player``." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:248 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:249 msgid "" "With this, lobby management should be more or less explained. Once you have " "your game going, you will most likely want to add some extra security to " @@ -57585,22 +58001,22 @@ msgid "" "because each game will share different information, this is not shown here." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:253 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:254 msgid "Starting the game" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:255 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:256 msgid "" "Once enough players have gathered in the lobby, the server should probably " "start the game. This is nothing special in itself, but we'll explain a few " "nice tricks that can be done at this point to make your life much easier." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:259 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:260 msgid "Player scenes" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:261 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:262 msgid "" "In most games, each player will likely have its own scene. Remember that " "this is a multiplayer game, so in every peer you need to instance **one " @@ -57608,21 +58024,21 @@ msgid "" "needs to instance 4 player nodes." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:264 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:265 msgid "" "So, how to name such nodes? In Godot, nodes need to have a unique name. It " "must also be relatively easy for a player to tell which node represents each " "player ID." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:267 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:268 msgid "" "The solution is to simply name the *root nodes of the instanced player " "scenes as their network ID*. This way, they will be the same in every peer " "and RPC will work great! Here is an example:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:296 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:297 msgid "" "Depending on when you execute pre_configure_game(), you may need to change " "any calls to ``add_child()`` to be deferred via ``call_deferred()``, as the " @@ -57630,11 +58046,11 @@ msgid "" "is being called)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:300 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:301 msgid "Synchronizing game start" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:302 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:303 msgid "" "Setting up players might take different amounts of time for every peer due " "to lag, different hardware, or other reasons. To make sure the game will " @@ -57642,17 +58058,17 @@ msgid "" "are ready can be useful:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:311 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:312 msgid "" "When the server gets the OK from all the peers, it can tell them to start, " "as for example:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:332 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:333 msgid "Synchronizing the game" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:334 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:335 msgid "" "In most games, the goal of multiplayer networking is that the game runs " "synchronized on all the peers playing it. Besides supplying an RPC and " @@ -57660,24 +58076,24 @@ msgid "" "masters." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:338 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:339 msgid "Network master" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:340 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:341 msgid "" "The network master of a node is the peer that has the ultimate authority " "over it." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:342 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:343 msgid "" "When not explicitly set, the network master is inherited from the parent " "node, which if not changed, is always going to be the server (ID 1). Thus " "the server has authority over all nodes by default." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:344 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:345 msgid "" "The network master can be set with the function :ref:`Node." "set_network_master(id, recursive) ` " @@ -57685,7 +58101,7 @@ msgid "" "recursively set on all child nodes of the node as well)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:347 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:348 msgid "" "Checking that a specific node instance on a peer is the network master for " "this node for all connected peers is done by calling :ref:`Node." @@ -57693,74 +58109,74 @@ msgid "" "``true`` when executed on the server and ``false`` on all client peers." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:349 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:350 msgid "" "If you have paid attention to the previous example, it's possible you " "noticed that each peer was set to have network master authority for their " "own player (Node) instead of the server:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:369 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:370 msgid "" "Each time this piece of code is executed on each peer, the peer makes itself " "master on the node it controls, and all other nodes remain as puppets with " "the server being their network master." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:371 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:372 msgid "" "To clarify, here is an example of how this looks in the `bomber demo " "`_:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:378 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:379 msgid "Master and puppet keywords" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:382 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:383 msgid "" -"The real advantage of this model is when used with the `master`/`puppet` " +"The real advantage of this model is when used with the ``master``/``puppet`` " "keywords in GDScript (or their equivalent in C# and Visual Script). " -"Similarly to the `remote` keyword, functions can also be tagged with them:" +"Similarly to the ``remote`` keyword, functions can also be tagged with them:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:385 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:386 msgid "Example bomb code:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:393 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:394 msgid "Example player code:" msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:407 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:408 msgid "" "In the above example, a bomb explodes somewhere (likely managed by whoever " "is master). The bomb knows the bodies in the area, so it checks them and " -"checks that they contain an `exploded` function." +"checks that they contain an ``exploded`` function." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:410 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:411 msgid "" -"If they do, the bomb calls `exploded` on it. However, the `exploded` method " -"in the player has a `master` keyword. This means that only the player who is " -"master for that instance will actually get the function." +"If they do, the bomb calls ``exploded`` on it. However, the ``exploded`` " +"method in the player has a ``master`` keyword. This means that only the " +"player who is master for that instance will actually get the function." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:413 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:414 msgid "" -"This instance, then, calls the `stun` method in the same instances of that " +"This instance, then, calls the ``stun`` method in the same instances of that " "same player (but in different peers), and only those which are set as " "puppet, making the player look stunned in all the peers (as well as the " "current, master one)." msgstr "" -#: ../../docs/tutorials/networking/high_level_multiplayer.rst:416 +#: ../../docs/tutorials/networking/high_level_multiplayer.rst:417 msgid "" -"Note that you could also send the stun() message only to a specific player " -"by using rpc_id(, \"exploded\", bomb_owner). This may not make much " -"sense for an area-of-effect case like the bomb, but in other cases, like " -"single target damage." +"Note that you could also send the ``stun()`` message only to a specific " +"player by using ``rpc_id(, \"exploded\", bomb_owner)``. This may not " +"make much sense for an area-of-effect case like the bomb, but in other " +"cases, like single target damage." msgstr "" #: ../../docs/tutorials/networking/http_request_class.rst:4 @@ -57915,8 +58331,8 @@ msgstr "" #: ../../docs/tutorials/networking/ssl_certificates.rst:21 msgid "" -"This file should contain any number of public certificates in https://en." -"wikipedia.org/wiki/Privacy-enhanced_Electronic_Mail format." +"This file should contain any number of public certificates in `PEM format " +"`__." msgstr "" #: ../../docs/tutorials/networking/ssl_certificates.rst:24 @@ -57935,9 +58351,9 @@ msgstr "" #: ../../docs/tutorials/networking/ssl_certificates.rst:34 msgid "" -"The first approach is the simplest: generate a private and public key pair, " -"and put the public pair in the .crt file (again, in PEM format). The private " -"key should go to your server." +"The first approach is the simplest: generate a private and public key pair " +"and add the public key (in PEM format) to the .crt file. The private key " +"should go to your server." msgstr "" #: ../../docs/tutorials/networking/ssl_certificates.rst:38 @@ -58283,11 +58699,34 @@ msgid "" "do not hesitate to visit it!" msgstr "" -#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:32 +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:29 +msgid "Types of assets" +msgstr "" + +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:31 +msgid "" +"Be aware that there are, broadly, two different types of assets you can post." +msgstr "" + +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:33 +msgid "" +"Assets labeled as \"Templates\", \"Projects\", or \"Demos\" appear under the " +"\"Templates\" tab in the Godot project manager. These assets are standalone " +"Godot projects that can run by themselves." +msgstr "" + +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:37 +msgid "" +"Other assets show up inside of the Godot editor under the \"AssetLib\" main " +"screen tab, next to \"2D\", \"3D\", and \"Script\". These assets are meant " +"to be downloaded and placed into an existing Godot project." +msgstr "" + +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:45 msgid "Can paid assets be uploaded to the asset library?" msgstr "" -#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:34 +#: ../../docs/tutorials/assetlib/what_is_assetlib.rst:47 msgid "" "Not to the official one, though in the future, there might be other asset " "libraries which allow it. That said, you are allowed to monetize and sell " @@ -58624,37 +59063,138 @@ msgid "" msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:17 -msgid "Submitting" +msgid "Submission guidelines" msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:19 msgid "" +"Before submitting your asset, please ensure it follows all of the " +"requirements, and also consider following the recommendations." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:25 +msgid "" +"Generally speaking, most assets people submit to the asset library are " +"accepted. However, in order for your asset to be accepted, there are a few " +"requirements your asset needs to meet to be approved." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:29 +msgid "" +"The asset must work. If the asset doesn't run or otherwise doesn't work in " +"the specified Godot version, then it will be rejected." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:32 +msgid "" +"No submodules, or any submodules must be non-essential. GitHub does not " +"include submodules in the downloaded ZIP file, so if the asset needs the " +"contents of the submodule, your asset won't work." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:36 +msgid "" +"The license needs to be correct. The license listed on the asset library " +"must match the license in the repository." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:39 +msgid "" +"Do not set the download commit to \"master\". The asset library validates " +"all assets with a SHA256 hash, so the version hosted on GitHub needs to be " +"*exactly* the same. Instead of \"master\", either specify a commit hash, or " +"tag versions and specify a version number." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:44 +msgid "" +"Use proper English for the name and description of your asset. This includes " +"using correct capitalization, and using full sentences in the description." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:48 +msgid "" +"The icon link must be a direct link. For icons hosted on GitHub, the link " +"must start with \"raw.githubusercontent.com\", not \"github.com\"." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:52 +msgid "Recommendations" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:54 +msgid "" +"These things are not required for your asset to be approved, but if you " +"follow these recommendations, you can help make the asset library a better " +"place for all users." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:58 +msgid "" +"Fix or suppress all script warnings. The warning system is there to help " +"identify issues with your code, but people using your asset don't need to " +"see them." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:62 +msgid "" +"Make your code conform to the official style guides. Having a consistent " +"style helps other people read your code, and it also helps if other people " +"wish to contribute to your asset. See: the :ref:`doc_gdscript_styleguide` or " +"the :ref:`doc_c_sharp_styleguide`." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:67 +msgid "" +"If your asset is a library for working with other files, consider including " +"example files in the asset." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:70 +msgid "" +"The icon should be a square, its aspect ratio should be 1:1. It should also " +"ideally have a minimum resolution of 64x64 pixels." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:73 +msgid "" +"While the asset library allows more than just GitHub, consider hosting your " +"asset's source code on GitHub. Other services may not work reliably, and a " +"lack of familiarity can be a barrier to contributors." +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:78 +msgid "Submitting" +msgstr "" + +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:80 +msgid "" "Once you are logged in, you will be able to head over to the \"Submit Assets" "\" page of the AssetLib, which will look like this:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:24 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:85 msgid "" "While it may look like a lot (and there is more as you scroll down), each " "field is described in terms of what you should put in. We will nonetheless " "go over what is required in the submission form here as well." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:29 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:90 msgid "**Asset Name**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:29 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:90 msgid "" "The name of your asset. Should be a unique, descriptive title of what your " "asset is." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:35 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:96 msgid "**Category**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:32 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:93 msgid "" "The category that your asset belongs to, and will be shown in search " "results. The category is split into **Addons** and **Projects**. In-editor, " @@ -58663,11 +59203,11 @@ msgid "" "type will only be visible from inside a project." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:41 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:102 msgid "**Godot version**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:38 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:99 msgid "" "The version of the engine that the asset works with. Currently, it's not " "possible to have a single asset entry contain downloads for multiple engine " @@ -58677,11 +59217,11 @@ msgid "" "3.x." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:48 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:109 msgid "**Version**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:44 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:105 msgid "" "The version number of the asset. While you are free to choose and use any " "versioning scheme that you like, you may want to look into something such as " @@ -58690,11 +59230,11 @@ msgid "" "incremented every time the asset download URL is changed or updated." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:53 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:114 msgid "**Repository host**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:51 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:112 msgid "" "Assets uploaded to the AssetLib are not hosted on it directly. Instead, they " "point to repositories hosted on third-party Git providers, such as GitHub, " @@ -58702,22 +59242,22 @@ msgid "" "uses, so the site can compute the final download link." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:56 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:117 msgid "**Repository URL**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:56 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:117 msgid "" "The URL to your asset's files/webpage. This will vary based on your choice " "of provider, but it should look similar to `https://github.com//" "`." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:61 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:122 msgid "**Issues URL**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:59 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:120 msgid "" "The URL to your asset's issue tracker. Again, this will differ from " "repository host to repository host, but will likely look similar to `https://" @@ -58725,33 +59265,33 @@ msgid "" "use your provider's issue tracker, and it's part of the same repository." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:65 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:126 msgid "**Download Commit/Tag**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:64 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:125 msgid "" "The commit or tag of the asset. For example, " "`b1d3172f89b86e52465a74f63a74ac84c491d3e1` or `v1.0`. The site computes the " "actual download URL from this." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:69 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:130 msgid "**Icon URL**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:68 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:129 msgid "" "The URL to your asset's icon (which will be used as a thumbnail in the " "AssetLib search results and on the asset's page). Should be an image in " "either the PNG or JPG format." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:74 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:135 msgid "**License**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:72 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:133 msgid "" "The license under which you are distributing the asset. The list includes a " "variety of free and open-source software licenses, such as GPL (v2 and v3), " @@ -58759,11 +59299,11 @@ msgid "" "opensource.org>`_ for a detailed description of each of the listed licenses." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:80 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:141 msgid "**Description**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:77 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:138 msgid "" "Finally, you can use the Description field for a textual overview of your " "asset, its features and behavior, a changelog, et cetera. In the future, " @@ -58771,41 +59311,41 @@ msgid "" "is plain text." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:82 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:143 msgid "" "You may also include up to three video and/or image previews, which will be " "shown at the bottom of the asset page. Use the \"Enable\" checkbox on each " "of the preview submission boxes to enable them." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:86 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:147 msgid "**Type**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:87 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:148 msgid "Either an image, or a video." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:88 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:149 msgid "**Image/YouTube URL**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:89 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:150 msgid "Either a link to the image, or to a video, hosted on YouTube." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:93 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:154 msgid "**Thumbnail URL**:" msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:91 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:152 msgid "" "A URL to an image that will be used as a thumbnail for the preview. This " "option will be removed eventually, and thumbnails will be automatically " "computed instead." msgstr "" -#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:95 +#: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:156 msgid "" "Once you are done, hit Submit. Your asset will be entered into the pending " "queue, which you can visit on the AssetLib `here `_. While it can be browsed online, " +"it's more convenient to use it directly from the editor. To do so, click the " +"**AssetLib** tab at the top of the editor:" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:20 +msgid "You can also find assets on code hosting websites such as GitHub." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:24 +msgid "" +"Some repositories describe themselves as \"plugins\" but may not actually be " +"*editor* plugins. This is especially the case for scripts that are intended " +"to be used in a running project. You don't need to enable such plugins to " +"use them. Download them and extract the files in your project folder." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:29 +msgid "" +"One way to distinguish editor plugins from non-editor plugins is to look for " +"a ``plugin.cfg`` file in the repository that hosts the plugin. If the " +"repository contains a ``plugin.cfg`` file in a folder placed in the ``addons/" +"`` folder, then it is an editor plugin." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:35 +msgid "Installing a plugin" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:37 +msgid "" +"To install a plugin, download it as a ZIP archive. On the Asset Library, " +"this can be done using the **Download** button, either from the editor or " +"using the Web interface." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:41 +msgid "" +"On GitHub, if a plugin has *tags* (versions) declared, go to the " +"**Releases** tab to download a stable release. This ensures you download a " +"version that was declared to be stable by its author." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:45 +msgid "" +"On GitHub, if the plugin doesn't have any *tags* declared, use the " +"**Download ZIP** button to download a ZIP of the latest revision:" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:50 +msgid "" +"Extract the ZIP archive and move the ``addons/`` folder it contains into " +"your project folder. If your project already contains an ``addons/`` folder, " +"move the plugin's ``addons/`` folder into your project folder to merge the " +"new folder contents with the existing one. Your file manager may ask you " +"whether to write into the folder; answer **Yes**. No files will be " +"overwritten in the process." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:57 +msgid "Enabling a plugin" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:59 +msgid "" +"To enable the freshly installed plugin, open **Project > Project Settings** " +"at the top of the editor then go the **Plugins** tab. If the plugin was " +"packaged correctly, you should see it in the list of plugins. Click on the " +"gray **Inactive** text and choose **Active** to enable the plugin. The word " +"**Active** will display in green to confirm the plugin was enabled." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/installing_plugins.rst:68 +msgid "" +"You can use the plugin immediately after enabling it; there's no need to " +"restart the editor. Likewise, disabling a plugin can be done without having " +"to restart the editor." +msgstr "" + #: ../../docs/tutorials/plugins/editor/making_plugins.rst:4 msgid "Making plugins" msgstr "" @@ -62714,7 +63343,7 @@ msgid "" "cfg`` file. In our example, ``main_screen_plugin.gd``." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:68 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:76 msgid "" "The important part in this script is the ``has_main_screen()`` function, " "which is overloaded so it returns ``true``. This function is automatically " @@ -62723,24 +63352,24 @@ msgid "" "we'll come back to it later." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:77 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:85 msgid "" "The ``main_screen_plugin.gd`` file will be responsible for each of our " "plugin's UI element instantiation, and it will also manage the communication " "between them." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:80 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:88 msgid "" "As a matter of fact, we wish to design each UI element in their own scene. " "Different scenes are not aware of each other unless they are both children " -"of a parent scene, yet they will then require ``get_node(\"../brother\")`` " +"of a parent scene, yet they will then require ``get_node(\"../sibling\")`` " "accessors. Such practice is more likely to produce errors at runtime, " "especially if these scenes do not share the same parent node. This is why, " "they should only be allowed to access their children." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:87 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:95 msgid "" "So, in order to communicate information to another scene, the best design is " "to define signals. If a user action in a UI scene #1 has to trigger " @@ -62750,13 +63379,13 @@ msgid "" "one script will also connect each of them to the required signals." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:94 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:102 msgid "" "If the ``main_screen_plugin.gd`` instantiates the UI scenes, won't they be " -"brothers nodes then?" +"sibling nodes then?" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:97 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:105 msgid "" "Not necessarily: this script may add all UI scenes as children of the same " "node of the editor's scene tree - but maybe it won't. And the " @@ -62765,11 +63394,11 @@ msgid "" "hold references to instantiated scenes." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:104 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:112 msgid "Main screen scene" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:106 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:114 msgid "" "Create a new scene with a ``Panel`` root node. Select this root node, and in " "the viewport, click the ``Layout`` menu and select ``Full Rect``. You also " @@ -62778,13 +63407,13 @@ msgid "" "script on the root node. Name it ``main_panel.gd``." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:112 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:120 msgid "" "We then add 2 children to this Panel node: first a ``Button`` node. Place it " "anywhere on the Panel. Then add a ``Label`` node." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:115 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:123 msgid "" "Now we need to define a behaviour when this button is pressed. This is " "covered by the :ref:`Handling a signal ` " @@ -62799,7 +63428,7 @@ msgid "" "pressed." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:127 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:135 msgid "" "As the button gets pressed, we want the side-panel's ``Label`` node to show " "a specific text. As explained above, we cannot directly access the target " @@ -62808,23 +63437,23 @@ msgid "" "``main_panel.gd`` script:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:143 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:151 msgid "" "In the same way, this main scene's Label node has to show a value when it " "receives a specific signal. Let's create a new " "``_on_side_button_pressed(text_to_show)`` function for this purpose:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:152 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:160 msgid "" "We are done for the main screen panel. Save the scene as ``main_panel.tscn``." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:155 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:163 msgid "Tabbed panel scene" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:157 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:165 msgid "" "The tabbed panel scene is almost identical to the main panel scene. You can " "either duplicate the ``main_panel.tscn`` file and name the new file " @@ -62835,25 +63464,25 @@ msgid "" "different names. Here is the script's full content:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:179 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:188 msgid "Connecting the two scenes in the plugin script" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:181 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:190 msgid "" "We now need to update the ``main_screen_plugin.gd`` script so the plugin " "instances our 2 GUI scenes and places them at the right places in the " "editor. Here is the full ``main.gd``:" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:230 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:249 msgid "" "A couple of specific lines were added. First, we defined the constants that " "contain our 2 GUI packed scenes (``MainPanel`` and ``SidePanel``). We will " "use these resources to instance both scenes." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:234 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:253 msgid "" "The ``_enter_tree()`` function is called before ``_ready()``. This is where " "we actually instance the 2 GUI scenes, and add them as children of specific " @@ -62862,7 +63491,7 @@ msgid "" "specified it will be placed in the left-side dock, upper-left tab." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:240 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:259 msgid "" "``EditorPlugin`` class does not provide any function to add an element in " "the main viewport. We thus have to use the ``get_editor_interface()." @@ -62872,7 +63501,7 @@ msgid "" "plugin." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:247 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:266 msgid "" "The ``_exit_tree()`` is pretty straightforward. It is automatically called " "when the plugin is deactivated. It is then important to ``queue_free()`` the " @@ -62882,7 +63511,7 @@ msgid "" "usage without any way to free it, which is not good." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:254 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:273 msgid "" "Finally the ``make_visible()`` function is overridden to hide or show the " "main panel as needed. This function is automatically called by the editor " @@ -62890,11 +63519,11 @@ msgid "" "Script." msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:259 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:278 msgid "Try the plugin" msgstr "" -#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:261 +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:280 msgid "" "Activate the plugin in the Project Settings. You'll observe a new button " "next to 2D, 3D, Script above the main viewport. You'll also notice a new tab " @@ -62903,6 +63532,13 @@ msgid "" "the Label caption inside it." msgstr "" +#: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:285 +msgid "" +"If you would like to see a more complete example of what main screen plugins " +"are capable of, check out the 2.5D demo projects here: https://github.com/" +"godotengine/godot-demo-projects/tree/master/misc/2.5d" +msgstr "" + #: ../../docs/tutorials/plugins/editor/import_plugins.rst:4 msgid "Import plugins" msgstr "" @@ -63512,28 +64148,42 @@ msgid "" "write such plugins with the example of creating a custom value editor." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:13 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:14 msgid "" -"To register these scripts as a new editor plugin, you have to create a " -"``plugin.cfg`` file as described in :ref:`doc_making_plugins`." +"Just like :ref:`doc_making_plugins`, we start out by making a new plugin, " +"getting a ``plugin.cfg`` file created, and start with our :ref:" +"`class_EditorPlugin`. However, instead of using ``add_custom_node`` or " +"``add_control_to_dock`` we'll use ``add_inspector_plugin``." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:17 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:37 msgid "EditorInspectorPlugin" msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:19 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:39 msgid "" -"We start by creating a script extending the :ref:" -"`class_EditorInspectorPlugin` class. This is needed to initialize the plugin " -"and add the custom property editor that we'll later define." +"To actually connect into the Inspector, we create a :ref:" +"`class_EditorInspectorPlugin` class. This script provides the \"hooks\" to " +"the inspector. Thanks to this class, the editor will call the functions " +"within the EditorInspectorPlugin while it goes through the process of " +"building the UI for the inspector. The script is used to check if we should " +"enable ourselves for any :ref:`class_Object` that is currently in the " +"inspector (including any :ref:`class_Resource` that is embedded!)." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:51 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:47 +msgid "" +"Once enabled, EditorInspectorPlugin has methods that allow for adding :ref:" +"`class_EditorProperty` nodes or just custom :ref:`class_Control` nodes to " +"the beginning and end of the inspector for that :ref:`class_Object`, or for " +"overriding or changing existing property editors." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:80 msgid "EditorProperty" msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:53 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:82 msgid "" "Next, we define the actual :ref:`class_EditorProperty` custom value editor " "that we want instantiated to edit integers. This is a custom :ref:" @@ -63742,15 +64392,15 @@ msgid "" "file structure that looks along those lines:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:127 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:126 msgid "" "Open up Godot and create a new project called \"simple\" alongside your " "``godot_headers`` Git clone. This will create the ``simple`` folder and " -"``project.godot`` file. Then manually create ``bin`` and ``src`` subfolders " -"in this folder." +"``project.godot`` file. Then manually create a ``src`` folder alongside the " +"``simple`` folder, and a ``bin`` subfolder in the ``simple`` folder." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:132 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:131 msgid "" "We're going to start by having a look at what our ``simple.c`` file " "contains. Now, for our example here we're making a single C source file " @@ -63759,14 +64409,14 @@ msgid "" "however falls outside of the scope of this tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:138 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:137 msgid "" "We'll be looking at the source code bit by bit so all the parts below should " "all be put together into one big file. Each section will be explained as we " "add it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:150 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:149 msgid "" "The above code includes the GDNative API struct header and a standard header " "that we will use further down for string operations. It then defines two " @@ -63776,7 +64426,7 @@ msgid "" "with a struct containing pointers to all these functions." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:157 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:156 msgid "" "To keep this implementation modular and easily extendable, the core " "functions are available directly through the \"core\" API struct, but " @@ -63784,13 +64434,13 @@ msgid "" "through extensions." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:161 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:160 msgid "" "In our example, we access one of these extension to gain access to the " "functions specifically needed for NativeScript." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:164 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:163 msgid "" "A NativeScript behaves like any other script in Godot. Because the " "NativeScript API is rather low level, it requires the library to specify " @@ -63800,14 +64450,14 @@ msgid "" "executed." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:177 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:176 msgid "" "These are forward declarations for the functions we'll be implementing for " "our object. A constructor and destructor is needed. Additionally, the object " "will have a single method called ``get_data``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:181 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:180 msgid "" "Next up is the first of the entry points Godot will call when our dynamic " "library is loaded. These methods are all prefixed with ``godot_`` (you can " @@ -63817,13 +64467,13 @@ msgid "" "among which the pointers to our API structures." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:188 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:187 msgid "" "For any additional API structures we need to loop through our extensions " "array and check the type of extension." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:207 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:206 msgid "" "Next up is ``gdnative_terminate`` which is called before the library is " "unloaded. Godot will unload the library when no object uses it anymore. " @@ -63831,7 +64481,7 @@ msgid "" "simply going to clear our API pointers." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:219 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:218 msgid "" "Finally we have ``nativescript_init`` which is the most important function " "we'll need today. This function will be called by Godot as part of loading a " @@ -63839,7 +64489,7 @@ msgid "" "available." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:244 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:243 msgid "" "We first tell the engine which classes are implemented by calling " "``nativescript_register_class``. The first parameter here is the handle " @@ -63849,7 +64499,7 @@ msgid "" "are descriptions for our constructor and destructor." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:251 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:250 msgid "" "We then tell Godot about our methods (well our one method in this case), by " "calling ``nativescript_register_method`` for each method of our class. In " @@ -63862,7 +64512,7 @@ msgid "" "is a description of which function to call when the method gets called." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:261 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:260 msgid "" "The description struct ``instance_method`` contains the function pointer to " "the function itself as first field. The other two fields in these structs " @@ -63876,14 +64526,14 @@ msgid "" "(so usually at library-unload time)." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:271 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:270 msgid "" "Now, it's time to start working on the functions of our object. First, we " "define a structure that we use to store the member data of an instance of " "our GDNative class." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:281 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:280 msgid "" "And then, we define our constructor. All we do in our constructor is " "allocate memory for our structure and fill it with some data. Note that we " @@ -63892,20 +64542,20 @@ msgid "" "identifier in case multiple objects are instantiated." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:287 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:286 msgid "" "This pointer will be passed to any of our functions related to our object as " "a parameter called ``p_user_data``, and can both be used to identify our " "instance and to access its member data." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:300 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:299 msgid "" "Our destructor is called when Godot is done with our object and we free our " "instances' member data." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:309 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:308 msgid "" "And finally, we implement our ``get_data`` function. Data is always sent and " "returned as variants so in order to return our data, which is a string, we " @@ -63913,7 +64563,7 @@ msgid "" "that string object into the variant we are returning." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:330 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:329 msgid "" "Strings are heap-allocated in Godot, so they have a destructor which frees " "the memory. Destructors are named ``godot_TYPENAME_destroy``. When a Variant " @@ -63924,7 +64574,7 @@ msgid "" "automatically destroyed by Godot." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:339 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:338 msgid "" "In more complex operations it can be confusing the keep track of which value " "needs to be deallocated and which does not. As a general rule: call " @@ -63933,22 +64583,22 @@ msgid "" "so the same is necessary in C." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:345 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:344 msgid "The variant we return is destroyed automatically by Godot." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:347 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:346 msgid "And that is the whole source code of our module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:352 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:351 msgid "" "We now need to compile our source code. As mentioned our example project on " "GitHub contains a SCons configuration that does all the hard work for you, " "but for our tutorial here we are going to call the compilers directly." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:356 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:355 msgid "" "Assuming you are sticking to the folder structure suggested above, it is " "best to open a terminal session in the ``src`` folder and execute the " @@ -63956,19 +64606,19 @@ msgid "" "proceed." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:360 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:359 msgid "On Linux:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:367 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:366 msgid "On macOS:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:374 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:373 msgid "On Windows:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:383 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:382 msgid "" "On the Windows build you also end up with a ``libsimple.lib`` library. This " "is a library that you can compile into a project to provide access to the " @@ -63976,19 +64626,11 @@ msgid "" "game for release this file will be ignored." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:390 -msgid "" -"If you add a blank ``.gdignore`` file to the ``src`` folder, Godot will not " -"try to import the compiler-generated files. This is necessary on Windows " -"were compiled objects have the ``.obj`` extension, which is also a 3D model " -"format supported by the engine." -msgstr "" - -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:396 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:388 msgid "Creating the GDNativeLibrary (``.gdnlib``) file" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:398 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:390 msgid "" "With our module compiled, we now need to create a corresponding :ref:" "`GDNativeLibrary ` resource with ``.gdnlib`` " @@ -63997,37 +64639,37 @@ msgid "" "per platform." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:404 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:396 msgid "" "We can use Godot to generate this file, so open the \"simple\" project in " "the editor." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:407 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:399 msgid "Start by clicking the create resource button in the Inspector:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:411 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:403 msgid "And select ``GDNativeLibrary``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:415 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:407 msgid "" "You should see a contextual editor appear in the bottom panel. Use the " "\"Expand Bottom Panel\" button in the bottom right to expand it to full " "height:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:421 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:413 msgid "General properties" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:423 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:415 msgid "" "In the Inspector, you have various properties to control loading the library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:425 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:417 msgid "" "If *Load Once* is enabled, our library is loaded only once and each " "individual script that uses our library will use the same data. Any variable " @@ -64036,14 +64678,14 @@ msgid "" "memory each time a script accesses the library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:431 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:423 msgid "" "If *Singleton* is enabled, our library is automatically loaded and a " "function called ``godot_gdnative_singleton`` is called. We'll leave that for " "another tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:435 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:427 msgid "" "The *Symbol Prefix* is a prefix for our core functions, such as ``godot_`` " "in ``godot_nativescript_init`` seen earlier. If you use multiple GDNative " @@ -64053,24 +64695,24 @@ msgid "" "platform does not like dynamic libraries." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:442 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:434 msgid "" "*Reloadable* defines whether the library should be reloaded when the editor " "loses and gains focus, typically to pick up new or modified symbols from any " "change made to the library externally." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:447 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:439 msgid "Platform libraries" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:449 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:441 msgid "" "The GDNativeLibrary editor plugin lets you configure two things for each " "platform and architecture that you aim to support." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:452 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:444 msgid "" "The *Dynamic Library* column (``entry`` section in the saved file) tells us " "for each platform and feature combination which dynamic library has to be " @@ -64078,7 +64720,7 @@ msgid "" "exporting to a specific platform." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:457 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:449 msgid "" "The *Dependencies* column (also ``dependencies`` section) tells Godot what " "other files need to be exported for each platform in order for our library " @@ -64086,34 +64728,34 @@ msgid "" "functionality from a 3rd party library, this is where you list that DLL." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:462 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:454 msgid "" "For our example, we only built libraries for Linux, macOS and/or Windows, so " "you can link them in the relevant fields by clicking the folder button. If " "you built all three libraries, you should have something like this:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:469 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:461 msgid "Saving the resource" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:471 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:463 msgid "" "We can then save our GDNativeLibrary resource as ``bin/libsimple.gdnlib`` " "with the Save button in the Inspector:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:476 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:468 msgid "" "The file is saved in a text-based format and should have contents similar to " "this:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:503 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:495 msgid "Creating the NativeScript (``.gdns``) file" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:505 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:497 msgid "" "With our ``.gdnlib`` file we've told Godot how to load our library, now we " "need to tell it about our \"Simple\" object class. We do this by creating a :" @@ -64121,13 +64763,13 @@ msgid "" "extension." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:509 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:501 msgid "" "Like done for the GDNativeLibrary resource, click the button to create a new " "resource in the Inspector and select ``NativeScript``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:514 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:506 msgid "" "The inspector will show a few properties that we need to fill. As *Class " "Name* we enter \"Simple\" which is the object class name that we declared in " @@ -64136,34 +64778,34 @@ msgid "" "*Load*:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:521 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:513 msgid "Finally click on the save icon and save this as ``bin/simple.gdns``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:525 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:517 msgid "" "Now it's time to build our scene. Add a Control node to your scene as your " "root and call it ``main``. Then add a Button and a Label as child nodes. " "Place them somewhere nice on screen and give your button a name." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:531 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:523 msgid "Select the control node and attach a script to it:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:535 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:527 msgid "Next link up the ``pressed`` signal on the button to your script:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:539 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:531 msgid "Don't forget to save your scene, call it ``main.tscn``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:541 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:533 msgid "Now we can implement our ``main.gd`` code:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:553 +#: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:545 msgid "" "After all that, our project should work. The first time you run it Godot " "will ask you what your main scene is and you select your ``main.tscn`` file " @@ -64322,66 +64964,73 @@ msgid "" "```` with ``windows``, ``linux`` or ``osx`` depending on your OS):" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:140 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:134 +msgid "" +"To speed up compilation, add `-jN` at the end of the SCons command line " +"where `N` is the number of CPU threads you have on your system. The example " +"below uses 4 threads." +msgstr "" + +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:142 msgid "" "This step will take a while. When it is completed, you should have static " "libraries that can be compiled into your project stored in ``godot-cpp/bin/" "``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:143 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:145 msgid "" "At some point in the future, compiled binaries will be available, making " "this step optional." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:148 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:150 msgid "" "You may need to add ``bits=64`` to the command on Windows or Linux. We're " "still working on better auto detection." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:152 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:154 msgid "Creating a simple plugin" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:154 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:156 msgid "" "Now it's time to build an actual plugin. We'll start by creating an empty " "Godot project in which we'll place a few files." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:157 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:159 msgid "" "Open Godot and create a new project. For this example, we will place it in a " "folder called ``demo`` inside our GDNative module's folder structure." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:160 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:162 msgid "" "In our demo project, we'll create a scene containing a Node called \"Main\" " "and we'll save it as ``main.tscn``. We'll come back to that later." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:163 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:165 msgid "" "Back in the top-level GDNative module folder, we're also going to create a " "subfolder called ``src`` in which we'll place our source files." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:166 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:168 msgid "" "You should now have ``demo``, ``godot-cpp``, ``godot_headers``, and ``src`` " "directories in your GDNative module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:169 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:171 msgid "" "In the ``src`` folder, we'll start with creating our header file for the " "GDNative node we'll be creating. We will name it ``gdexample.h``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:233 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:235 msgid "" "There are a few things of note to the above. We're including ``Godot.hpp`` " "which contains all our basic definitions. After that, we include ``Sprite." @@ -64389,31 +65038,31 @@ msgid "" "class in our module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:238 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:240 msgid "" "We're using the namespace ``godot``, since everything in GDNative is defined " "within this namespace." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:241 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:243 msgid "" "Then we have our class definition, which inherits from our Sprite through a " "container class. We'll see a few side effects of this later on. The " "``GODOT_CLASS`` macro sets up a few internal things for us." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:245 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:247 msgid "After that, we declare a single member variable called ``time_passed``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:247 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:249 msgid "" "In the next block we're defining our methods, we obviously have our " "constructor and destructor defined, but there are two other functions that " "will likely look familiar to some, and one new method." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:251 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:253 msgid "" "The first is ``_register_methods``, which is a static function that Godot " "will call to find out which methods can be called on our NativeScript and " @@ -64424,11 +65073,11 @@ msgid "" "code in it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:258 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:260 msgid "Let's implement our functions by creating our ``gdexample.cpp`` file:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:318 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:320 msgid "" "This one should be straightforward. We're implementing each method of our " "class that we defined in our header file. Note that the ``register_method`` " @@ -64437,7 +65086,7 @@ msgid "" "destructor and ``_init`` functions." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:324 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:326 msgid "" "The other method of note is our ``_process`` function, which simply keeps " "track of how much time has passed and calculates a new position for our " @@ -64448,7 +65097,7 @@ msgid "" "``set_position`` can be called directly on our class." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:332 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:334 msgid "" "There is one more C++ file we need; we'll name it ``gdlibrary.cpp``. Our " "GDNative plugin can contain multiple NativeScripts, each with their own " @@ -64457,13 +65106,13 @@ msgid "" "NativeScripts in our GDNative plugin." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:356 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:358 msgid "" "Note that we are not using the ``godot`` namespace here, since the three " "functions implemented here need to be defined without a namespace." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:359 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:361 msgid "" "The ``godot_gdnative_init`` and ``godot_gdnative_terminate`` functions get " "called respectively when Godot loads our plugin and when it unloads it. All " @@ -64472,7 +65121,7 @@ msgid "" "needs." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:365 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:367 msgid "" "The important function is the third function called " "``godot_nativescript_init``. We first call a function in our bindings " @@ -64480,11 +65129,11 @@ msgid "" "``register_class`` for each of our classes in our library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:371 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:373 msgid "Compiling the plugin" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:373 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:375 msgid "" "We cannot easily write by hand a ``SConstruct`` file that SCons would use " "for building. For the purpose of this example, just use :download:`this " @@ -64493,49 +65142,49 @@ msgid "" "files in a subsequent tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:381 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:383 msgid "" "This ``SConstruct`` file was written to be used with the latest ``godot-" "cpp`` master, you may need to make small changes using it with older " "versions or refer to the ``SConstruct`` file in the Godot 3.0 documentation." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:385 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:387 msgid "" "Once you've downloaded the ``SConstruct`` file, place it in your GDNative " "module folder besides ``godot-cpp``, ``godot_headers`` and ``demo``, then " "run:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:392 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:394 msgid "You should now be able to find the module in ``demo/bin/``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:396 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:398 msgid "" "Here, we've compiled both godot-cpp and our gdexample library as debug " "builds. For optimized builds, you should compile them using the " "``target=release`` switch." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:401 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:403 msgid "Using the GDNative module" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:403 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:405 msgid "" "Before we jump back into Godot, we need to create two more files in ``demo/" "bin/``. Both can be created using the Godot editor, but it may be faster to " "create them directly." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:407 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:409 msgid "" "The first one is a file that lets Godot know what dynamic libraries should " "be loaded for each platform and is called ``gdexample.gdnlib``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:431 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:433 msgid "" "This file contains a ``general`` section that controls how the module is " "loaded. It also contains a prefix section which should be left on ``godot_`` " @@ -64545,7 +65194,7 @@ msgid "" "linked statically." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:437 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:439 msgid "" "The ``entry`` section is the important bit: it tells Godot the location of " "the dynamic library in the project's filesystem for each supported platform. " @@ -64554,7 +65203,7 @@ msgid "" "incompatible with the target platform." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:443 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:445 msgid "" "Finally, the ``dependencies`` section allows you to name additional dynamic " "libraries that should be included as well. This is important when your " @@ -64562,20 +65211,20 @@ msgid "" "a third-party dynamic library with your project." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:448 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:450 msgid "" "If you double click on the ``gdexample.gdnlib`` file within Godot, you'll " "see there are far more options to set:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:453 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:455 msgid "" "The second file we need to create is a file used by each NativeScript we've " "added to our plugin. We'll name it ``gdexample.gdns`` for our gdexample " "NativeScript." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:469 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:471 msgid "" "This is a standard Godot resource; you could just create it directly in your " "scene, but saving it to a file makes it much easier to reuse it in other " @@ -64585,28 +65234,28 @@ msgid "" "use." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:475 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:477 msgid "" "Time to jump back into Godot. We load up the main scene we created way back " "in the beginning and now add a Sprite to our scene:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:480 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:482 msgid "" "We're going to assign the Godot logo to this sprite as our texture, disable " "the ``centered`` property and drag our ``gdexample.gdns`` file onto the " "``script`` property of the sprite:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:486 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:488 msgid "We're finally ready to run the project:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:491 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:493 msgid "Adding properties" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:493 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:495 msgid "" "GDScript allows you to add properties to your script using the ``export`` " "keyword. In GDNative you have to register the properties and there are two " @@ -64614,32 +65263,32 @@ msgid "" "and getter function." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:500 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:502 msgid "" "There is a third option, just like in GDScript you can directly implement " "the ``_get_property_list``, ``_get`` and ``_set`` methods of an object but " "that goes far beyond the scope of this tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:504 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:506 msgid "" "We'll examine both starting with the direct bind. Lets add a property that " "allows us to control the amplitude of our wave." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:507 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:509 msgid "" "In our ``gdexample.h`` file we simply need to add a member variable like so:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:517 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:519 msgid "" "In our ``gdexample.cpp`` file we need to make a number of changes, we will " "only show the methods we end up changing, don't remove the lines we're " "omitting:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:569 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:571 msgid "" "Once you compile the module with these changes in place you will see that a " "property has been added to our interface. You can now change this property " @@ -64647,41 +65296,41 @@ msgid "" "along a larger figure." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:576 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:578 msgid "" "The ``reloadable`` property in the ``gdexample.gdnlib`` file must be set to " "``true`` for the Godot editor to automatically pick up the newly added " "property." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:580 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:582 msgid "" "However, this setting should be used with care especially when tool classes " "are used, as the editor might hold objects then that have script instances " "attached to them that are managed by a GDNative library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:584 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:586 msgid "" "Lets do the same but for the speed of our animation and use a setter and " "getter function. Our ``gdexample.h`` header file again only needs a few more " "lines of code:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:599 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:601 msgid "" "This requires a few more changes to our ``gdexample.cpp`` file, again we're " "only showing the methods that have changed so don't remove anything we're " "omitting:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:671 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:673 msgid "" "Now when the project is compiled we'll see another property called speed. " "Changing its value will make the animation go faster or slower." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:674 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:676 msgid "" "For this example there is no obvious advantage of using a setter and getter. " "It is just more code to write. For a simple example as this there may be a " @@ -64689,13 +65338,13 @@ msgid "" "but in many cases just binding the variable will be enough." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:679 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:681 msgid "" "Getters and setters become far more useful in more complex scenarios where " "you need to make additional choices based on the state of your object." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:684 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:686 msgid "" "For simplicity we've left out the optional parameters in the " "register_property method call. These parameters are " @@ -64703,14 +65352,14 @@ msgid "" "further configure how properties are displayed and set on the Godot side." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:689 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:691 msgid "" "Modern C++ compilers are able to infer the class and variable type and allow " "you to omit the ```` part of our ``register_property`` " "method. We've had mixed experiences with this however." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:696 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:698 msgid "" "Last but not least, signals fully work in GDNative as well. Having your " "module react to a signal given out by another object requires you to call " @@ -64718,17 +65367,17 @@ msgid "" "wobbling Godot icon, we would need to showcase a far more complete example." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:701 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:703 msgid "This however is the required syntax:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:712 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:714 msgid "" "Note that you can only call ``my_method`` if you've previously registered it " "in your ``_register_methods`` method." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:715 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:717 msgid "" "Having your object sending out signals is far more common. For our wobbling " "Godot icon we'll do something silly just to show how it works. We're going " @@ -64736,26 +65385,26 @@ msgid "" "along." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:719 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:721 msgid "" "In our ``gdexample.h`` header file we just need to define a new member " "``time_emit``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:730 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:732 msgid "" "The changes in ``gdexample.cpp`` are a bit more elaborate this time. First " "you'll need to set ``time_emit = 0.0;`` in either our ``_init`` method or in " "our constructor. But the other two needed changes we'll look at one by one." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:734 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:736 msgid "" "In our ``_register_methods`` method we need to declare our signal and we do " "this as follows:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:761 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:763 msgid "" "Here we see a nice improvement in the latest version of godot-cpp where our " "``register_signal`` method can be a single call first taking the signals " @@ -64763,18 +65412,18 @@ msgid "" "each parameter we'll send along with this signal." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:766 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:768 msgid "" "For NativeScript 1.0 we first build a dictionary in which we tell Godot " "about the types of arguments we will pass to our signal, and then register " "it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:769 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:771 msgid "Next we'll need to change our ``_process`` method:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:815 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:817 msgid "" "After a second has passed we emit our signal and reset our counter. Again in " "the new version of godot-cpp we can add our parameter values directly to " @@ -64782,22 +65431,22 @@ msgid "" "then call ``emit_signal``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:820 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:822 msgid "" "Once compiled we can go into Godot and select our sprite node. On our " "``Node`` tab we find our new signal and link it up by pressing connect. " "We've added a script on our main node and implemented our signal like this:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:831 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:833 msgid "Every second we simply output our position to the console." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:834 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:836 msgid "NativeScript 1.1 vs NativeScript 1.0" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:836 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:838 msgid "" "So far in our example above there doesn't seem to be a lot of difference " "between the old and new syntax. The class is defined slightly differently " @@ -64805,7 +65454,7 @@ msgid "" "of our object. A lot of the improvements are hidden under the hood." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:841 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:843 msgid "" "This example only deals with simple variables and simple methods. Especially " "once you start passing references to other objects or when you start calling " @@ -64813,18 +65462,18 @@ msgid "" "show its benefits." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:847 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:849 msgid "Next steps" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:849 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:851 msgid "" "The above is only a simple example, but we hope it shows you the basics. You " "can build upon this example to create full-fledged scripts to control nodes " "in Godot using C++." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:853 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:855 msgid "" "You should be able to edit and recompile the plugin while the Godot editor " "remains open; just rerun the project after the library has finished building." @@ -64835,19 +65484,20 @@ msgid "Android plugins" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:4 -msgid "Creating Android plugins" +msgid "Creating Android plugins (Godot 4.0+)" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:9 msgid "" -"Making video games portable is all fine and dandy, until mobile gaming " -"monetization shows up." +"Android plugins are powerful tools to extend the capabilities of the Godot " +"engine by tapping into the functionality provided by the Android platform " +"and ecosystem." msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:12 msgid "" -"This area is complex, usually a mobile game that monetizes needs special " -"connections to a server for things like:" +"Mobile gaming monetization is one such example since it requires features " +"and capabilities that don't belong to the core feature set of a game engine:" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:15 @@ -64916,283 +65566,232 @@ msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:32 msgid "" -"On iOS, you can write a C++ module and take advantage of the C++/ObjC " -"intercommunication. Even using GDNative is possible to make it a plug-in." +"Making modifications to the Android export template is another use-case " +"since using a plugin for that task allows the project to remain compatible " +"with newer Godot versions." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:35 -msgid "" -"On Android, interfacing with C++ through JNI (Java Native Interface) isn't " -"as flexible, so writing plugins is considerably more work." +#: ../../docs/tutorials/plugins/android/android_plugin.rst:36 +msgid "Android plugin" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:38 msgid "" -"It is also possible that you just want to do modifications to the Android " -"export template, and by using a plugin your project can remain compatible " -"with newer Godot versions (as the android source template will get updated " -"on each release)." +"While introduced in Godot 3.2.0, the Android plugin system got a significant " +"architecture update starting with Godot 3.2.2. In Godot 4.0, the new " +"architecture became the default, rendering plugins for Godot 3.2.0 " +"incompatible with Godot 4.0." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:42 -msgid "Maybe REST" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:44 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:41 msgid "" -"Most of these APIs allow communication via REST/JSON APIs. If the API is " -"relatively simple and does not require complex authentication, this may be a " -"better idea than writing a specific Android plugin." +"As a prerequisite, make sure you understand how to set up a :ref:`custom " +"build environment` for Android." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:47 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:43 msgid "" -"Godot has great support for HTTP, HTTPS and JSON, so an API implemented this " -"way will work on every platform, too." +"At its core, a Godot Android plugin is a `Android archive library `_ (*aar* " +"archive file) with the following caveats:" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:50 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:46 msgid "" -"Of course, in most of the cases, it's easier to just write an Android " -"plugin, so keep reading." +"The library must have a dependency on the Godot engine library (``godot-lib." +"x.y.aar``). A stable version is made available for each Godot release." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:48 +msgid "" +"The library must include a specifically configured ```` tag in " +"its manifest file." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:51 +msgid "Building a Android plugin" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:53 -msgid "Android plugin" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:55 msgid "" -"Writing an Android plugin is now possible, beginning with Godot 3.2. It's " -"also pretty easy! Re-compiling the engine is no longer needed." +"**Prerequisite:** `Android Studio `_ " +"is strongly recommended as the IDE to use to create Android plugins. The " +"instructions below assumes that you're using Android Studio." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:57 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:56 msgid "" -"Before anything, make sure you understand how to set up a :ref:`custom build " -"environment` for Android." +"Follow `these instructions `__ to create an Android library module for your plugin." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:59 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:58 +msgid "Add the Godot engine library as a dependency to your plugin module:" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:60 +msgid "Download the Godot engine library (godot-lib.x.y.aar)" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:62 msgid "" -"Your plugin needs to be in a folder other than *\"build/\"* inside the *" -"\"res://android\"* directory (which was created by following the link " -"above). Any name is fine, so name it according to the SDK you will implement " -"(or just your plugin name)." +"Follow `these instructions `__ to add the Godot engine library as a " +"dependency for your plugin." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:61 -msgid "Once created, there are certain rules to follow, but they are simple." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:64 -msgid "Android directories" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:66 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:65 msgid "" -"Inside your plugin folder, you can use the standard folders as if they were " -"from an Android Gradle project. Examples of this are:" +"In the plugin module's ``build.gradle`` file, replace ``implementation`` " +"with ``compileOnly`` for the dependency line for the Godot engine library." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:77 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:67 msgid "" -"Gradle will treat them as part of the project automatically when building, " -"same as the default project files." +"Create a new class in the plugin module and make sure it extends ``org." +"godotengine.godot.plugin.GodotPlugin``. At runtime, it will be used to " +"instantiate a singleton object that will be used by the Godot engine to " +"load, initialize and run the plugin." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:80 -msgid "\"Chunk\" files" +#: ../../docs/tutorials/plugins/android/android_plugin.rst:70 +msgid "Update the plugin ``AndroidManifest.xml`` file:" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:72 +msgid "Open the plugin ``AndroidManifest.xml`` file." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:74 +msgid "Add the ```` tag if it's missing." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:76 +msgid "" +"In the ```` tag, add a ```` tag setup as follow::" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:82 msgid "" -"It is now possible to modify *\"AndroidManifest.xml\"* and *build.gradle* in " -"*\"res://android/build\"* directly and Godot will keep your changes when " -"building. The problem, however, is that if you update Godot, you will also " -"need to update the *build/* folder and your changes will be lost." +"Where ``PluginName`` is the name of the plugin, and ``plugin.init." +"ClassFullName`` is the full name (package + class name) of the plugin " +"loading class." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:86 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:84 msgid "" -"To overcome this, the Godot Android Plugin system lets you create *chunk* " -"files, where you can specify little bits that can be inserted in both *" -"\"AndroidManifest.xml\"* and *build.gradle*. They are inserted every time " -"Godot builds the project for export or deploy." +"Add the remaining logic for your plugin and run the ``gradlew build`` " +"command to generate the plugin's ``aar`` file. The build will likely " +"generate both a ``debug`` and ``release`` ``aar`` files. Depending on your " +"need, pick only one version (usually the ``release`` one) which to provide " +"your users with." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:90 -msgid "AndroidManifest.conf" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:92 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:87 msgid "" -"This file allows to insert bits of chunk into *AndroidManifest.xml*, the " -"following are supported tags and are entirely optional:" +"**Note:** The plugin's ``aar`` filename must match the following pattern: " +"``[PluginName]*.aar`` where ``PluginName`` is the name of the plugin in " +"camel case (e.g: ``GodotPayment.release.aar``)." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:98 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:91 +msgid "Loading and using a Android plugin" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:93 msgid "" -"Any bit of text below this tag is inserted inside the tag of the " -"file. This is often used for permission tags." +"Once you have access to the plugin ``aar`` file, move it to the Godot " +"project ``res://android/plugins`` directory." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:104 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:95 +msgid "From your script::" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:101 msgid "" -"Any bit of text below this tag inside the tag of the file. " -"Many SDKs require this." +"**When exporting the project**, you need to add the plugin's name to the " +"``Custom Template`` -> ``Plugins`` section. If trying to add multiple " +"plugins, separate their names by a comma (``,``)." msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:110 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:105 +msgid "Bundling GDNative resources" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:106 msgid "" -"These are attributes you can add at the end of the tag. Some " -"SDKs require this." +"A Android plugin can define and provide C/C++ GDNative resources, either to " +"provide and/or access functionality from the game logic. The GDNative " +"resources can be bundled within the plugin ``aar`` file which simplifies the " +"distribution and deployment process:" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:113 -msgid "gradle.conf" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:115 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:109 msgid "" -"This file allows to insert bits of chunk into *build.gradle*, the following " -"are supported and are entirely optional:" +"The shared libraries (``.so``) for the defined GDNative libraries will be " +"automatically bundled by the ``aar`` build system." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:111 +msgid "" +"Godot ``*.gdnlib`` and ``*.gdns`` resource files must be manually defined in " +"the plugin ``assets`` directory. The recommended path for these resources " +"relative to the ``assets`` directory should be: ``godot/plugin/v1/" +"[PluginName]/``." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:114 +msgid "" +"For GDNative libraries, the plugin singleton object must override the ``org." +"godotengine.godot.plugin.GodotPlugin::getPluginGDNativeLibrariesPaths()`` " +"method, and return the paths to the bundled GDNative libraries config files " +"(``*.gdnlib``). The paths must be relative to the ``assets`` directory. At " +"runtime, the plugin will provide these paths to Godot core which will use " +"them to load and initialize the bundled GDNative libraries." +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:119 +msgid "Reference implementations" +msgstr "" + +#: ../../docs/tutorials/plugins/android/android_plugin.rst:120 +msgid "" +"`Godot Oculus Mobile plugin `_" msgstr "" #: ../../docs/tutorials/plugins/android/android_plugin.rst:122 msgid "" -"Any bit of text below this tag is inserted inside the buildscript." -"repositories section of the build file." +"`Bundled gdnative resources `_" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:130 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:124 msgid "" -"Any bit of text below this tag is inserted inside the buildscript." -"dependencies section of the build file." +"`Godot Payment plugin `_" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:137 -msgid "" -"Any bit of text below this tag is inserted inside the allprojects." -"repositories section of the build file." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:144 -msgid "" -"Any bit of text below this tag is inserted inside the dependencies section " -"of the build file." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:152 -msgid "" -"Any bit of text below this tag is inserted inside the android.defaultconfig " -"section of the build file." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:159 -msgid "" -"Any bit of text below this tag is inserted inside the global scope of the " -"build file." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:162 -msgid "Java singleton" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:164 -msgid "" -"An Android plugin will usually have a singleton class that will load it, " -"this class inherits from ``Godot.SingletonBase``. Resource identifiers for " -"any additional resources you have provided for the module will be in the " -"``com.godot.game.R`` class, so you'll likely want to import it." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:169 -msgid "A singleton object template follows:" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:239 -msgid "Calling back to Godot" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:241 -msgid "" -"Calling back to Godot from Java is a little more difficult. The instance ID " -"of the script must be known first, this is obtained by calling " -"``get_instance_ID()`` on the script. This returns an integer that can be " -"passed to Java." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:246 -msgid "" -"From Java, use the ``calldeferred`` function to communicate back with Godot. " -"Java will most likely run in a separate thread, so calls are deferred:" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:254 -msgid "Godot will detect this singleton and initialize it at the proper time." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:257 -msgid "Using it from GDScript" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:259 -msgid "" -"First you will need to add your singleton into the android modules to be " -"loaded. Go to \"Project > Project Settings\". Then on the tab \"General\" go " -"to the \"Android\" section, and fill the Modules part with your module name. " -"The module should include the full Java path. For our example: ``org/" -"godotengine/godot/MySingleton``." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:265 -msgid "Then, from your script:" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:274 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:128 #: ../../docs/development/compiling/compiling_for_windows.rst:212 #: ../../docs/development/compiling/compiling_for_android.rst:195 #: ../../docs/development/editor/creating_icons.rst:86 msgid "Troubleshooting" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:277 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:131 msgid "Godot crashes upon load" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:279 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:133 msgid "Check ``adb logcat`` for possible problems, then:" msgstr "" -#: ../../docs/tutorials/plugins/android/android_plugin.rst:281 -msgid "Make sure libgodot_android.so is in the ``libs/armeabi`` folder" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:282 +#: ../../docs/tutorials/plugins/android/android_plugin.rst:135 msgid "" "Check that the methods used in the Java singleton only use simple Java " -"datatypes, more complex ones are not supported." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:286 -msgid "Future" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:288 -msgid "" -"Godot has an experimental Java API Wrapper that allows to use the entire " -"Java API from GDScript." -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:291 -msgid "It's simple to use and it's used like this:" -msgstr "" - -#: ../../docs/tutorials/plugins/android/android_plugin.rst:297 -msgid "" -"This is most likely not functional yet, if you want to test it and help us " -"make it work, contact us on irc.freenode.org:#godotengine-devel." +"datatypes. More complex datatypes are not supported." msgstr "" #: ../../docs/tutorials/platform/android_in_app_purchases.rst:4 @@ -66019,26 +66618,24 @@ msgstr "" #: ../../docs/tutorials/platform/customizing_html5_shell.rst:190 msgid "" -"Initializes the engine if not yet initialized and starts the game with the " -"main pack loaded from the passed URL." +"Initializes the engine if not yet initialized, loads the executable, and " +"starts the game with the main pack loaded from the passed URL." msgstr "" #: ../../docs/tutorials/platform/customizing_html5_shell.rst:193 msgid "" -"If the engine isn't loaded yet, the base path of the passed URL will be used " -"to load the engine." +"If the engine isn't loaded yet, the base path of the passed executable name " +"will be used to load the engine." msgstr "" #: ../../docs/tutorials/platform/customizing_html5_shell.rst:196 msgid "" -"This function ignores overrides of filenames and their extensions to start " -"only the main pack passed as argument." +"Executable's name (URL) to start. Also used as base path to load the engine " +"if not loaded already. Should not contain the file's extension." msgstr "" -#: ../../docs/tutorials/platform/customizing_html5_shell.rst:199 -msgid "" -"Path to the main pack to start. Also used as base path to load the engine if " -"not loaded already." +#: ../../docs/tutorials/platform/customizing_html5_shell.rst:200 +msgid "Path (URL) to the main pack to start." msgstr "" #: ../../docs/tutorials/platform/customizing_html5_shell.rst:203 @@ -67084,10 +67681,9 @@ msgstr "" #: ../../docs/tutorials/content/procedural_geometry/immediategeometry.rst:13 msgid "" -"Before starting, you should clear the clear the geometry by calling " -"``clear()``. This ensures that you are not building upon the geometry from " -"the previous frame. If you want to keep geometry between frames, do not call " -"``clear()``." +"Before starting, you should clear the geometry by calling ``clear()``. This " +"ensures that you are not building upon the geometry from the previous frame. " +"If you want to keep geometry between frames, do not call ``clear()``." msgstr "" #: ../../docs/tutorials/content/procedural_geometry/immediategeometry.rst:17 @@ -67433,7 +68029,7 @@ msgid "" "using the low-level :ref:`CanvasItem ` API." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:108 +#: ../../docs/tutorials/optimization/using_servers.rst:111 msgid "" "The Canvas Item API in the server allows you to add draw primitives to it. " "Once added, they can't be modified. The Item needs to be cleared and the " @@ -67441,43 +68037,43 @@ msgid "" "can be done as many times as desired)." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:112 +#: ../../docs/tutorials/optimization/using_servers.rst:115 msgid "Primitives are cleared this way:" msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:121 +#: ../../docs/tutorials/optimization/using_servers.rst:124 msgid "Instantiating a Mesh into 3D space" msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:123 +#: ../../docs/tutorials/optimization/using_servers.rst:126 msgid "" "The 3D APIs are different than the 2D ones, so the instantiation API must be " "used." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:146 +#: ../../docs/tutorials/optimization/using_servers.rst:152 msgid "Creating a 2D RigidBody and moving a sprite with it" msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:148 +#: ../../docs/tutorials/optimization/using_servers.rst:154 msgid "" "This creates a :ref:`RigidBody2D ` using the :ref:" "`Physics2DServer ` API, and moves a :ref:`CanvasItem " "` when the body moves." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:176 +#: ../../docs/tutorials/optimization/using_servers.rst:186 msgid "" "The 3D version should be very similar, as 2D and 3D physics servers are " "identical (using :ref:`RigidBody ` and :ref:`PhysicsServer " "` respectively)." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:180 +#: ../../docs/tutorials/optimization/using_servers.rst:190 msgid "Getting data from the servers" msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:182 +#: ../../docs/tutorials/optimization/using_servers.rst:192 msgid "" "Try to **never** request any information from ``VisualServer``, " "``PhysicsServer`` or ``Physics2DServer`` by calling functions unless you " @@ -67488,7 +68084,7 @@ msgid "" "(and it won't be obvious why)." msgstr "" -#: ../../docs/tutorials/optimization/using_servers.rst:188 +#: ../../docs/tutorials/optimization/using_servers.rst:198 msgid "" "Because of this, most APIs in such servers are designed so it's not even " "possible to request information back, until it's actual data that can be " @@ -69192,9 +69788,10 @@ msgstr "" #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:49 msgid "" -"GLES is not capable of using High Dynamic Range (HDR) rendering features. If " -"HDR is set for your project, or for a given viewport, Godot will still user " -"Low Dynamic Range (LDR) which limits viewport values to the ``0-1`` range." +"GLES2 is not capable of using High Dynamic Range (HDR) rendering features. " +"If HDR is set for your project, or for a given viewport, Godot will still " +"user Low Dynamic Range (LDR) which limits viewport values to the ``0-1`` " +"range." msgstr "" #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:54 @@ -69544,6 +70141,192 @@ msgid "" "rotation:" msgstr "" +#: ../../docs/tutorials/misc/state_design_pattern.rst:4 +msgid "State design pattern" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:9 +msgid "" +"Scripting a game can be difficult when there are many states that need to " +"handled, but only one script can be attached to a node at a time. Instead of " +"creating a state machine within the player's control script, it would make " +"development simpler if the states were separated out into different classes." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:14 +msgid "" +"There are many ways to implement a state machine with Godot, and some other " +"methods are below:" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:16 +msgid "" +"The player can have a child node for each state, which are called when " +"utilized." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:17 +msgid "Enums can be used in conjunction with a match statement." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:18 +msgid "" +"The state scripts themselves could be swapped out from a node dynamically at " +"run-time." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:20 +msgid "" +"This tutorial will focus only on adding and removing nodes which have a " +"state script attached. Each state script will be an implementation of a " +"different state." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:24 +msgid "" +"There is a great resource explaining the concept of the state design pattern " +"here: https://gameprogrammingpatterns.com/state.html" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:28 +msgid "Script setup" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:30 +msgid "" +"The feature of inheritance is useful for getting started with this design " +"principle. A class should be created that describes the base features of the " +"player. For now, a player will be limited to two actions: **move left**, " +"**move right**. This means there will be two states: **idle** and **run**." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:35 +msgid "Below is the generic state, from which all other states will inherit." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:66 +msgid "" +"A few notes on the above script. First, this implementation uses a " +"``setup(change_state, animated_sprite, persistent_state)`` method to assign " +"references. These references will be instantiated in the parent of this " +"state. This helps with something in programming known as *cohesion*. The " +"state of the player does not want the responsibility of creating these " +"variables, but does want to be able to use them. However, this does make the " +"state *coupled* to the state's parent. This means that the state is highly " +"reliant on whether it has a parent which contains these variables. So, " +"remember that *coupling* and *cohesion* are important concepts when it comes " +"to code management." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:75 +msgid "" +"See the following page for more details on cohesion and coupling: https://" +"courses.cs.washington.edu/courses/cse403/96sp/coupling-cohesion.html" +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:78 +msgid "" +"Second, there are some methods in the script for moving, but no " +"implementation. The state script just uses ``pass`` to show that it will not " +"execute any instructions when the methods are called. This is important." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:81 +msgid "" +"Third, the ``_physics_process(delta)`` method is actually implemented here. " +"This allows the states to have a default ``_phyics_process(delta)`` " +"implementation where ``velocity`` is used to move the player. The way that " +"the states can modify the movement of the player is to use the ``velocity`` " +"variable defined in their base class." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:85 +msgid "" +"Finally, this script is actually being designated as a class named " +"``State``. This makes refactoring the code easier, since the file path from " +"using the ``load()`` and ``preload()`` functions in godot will not be needed." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:88 +msgid "" +"So, now that there is a base state, the two states discussed earlier can be " +"implemented." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:154 +msgid "" +"The since the ``Run`` and ``Idle`` states extend from ``State`` which " +"extends ``Node2D``, the function ``_physics_process(delta)`` is called from " +"the **bottom-up** meaning ``Run`` and ``Idle`` will call their " +"implementation of ``_physics_process(delta)``, then ``State`` will call its " +"implementation, then ``Node2D`` will call its own implementation and so on. " +"This may seem strange, but it is only relevant for predefined functions such " +"as ``_ready()``, ``_process(delta)``, etc. Custom functions use the normal " +"inheritance rules of overriding the base implementation." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:161 +msgid "" +"There is a round-about method for obtaining a state instance. A state " +"factory can be used." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:184 +msgid "" +"This will look for states in a dictionary and return the state if found." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:186 +msgid "" +"Now that all the states are defined with their own scripts, it is time to " +"figure out how those references that passed to them will be instantiated. " +"Since these references will not change it makes sense to call this new " +"script ``persistent_state.gd``." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:229 +msgid "" +"The ``persistent_state.gd`` script contains code for detecting input. This " +"was to make the tutorial simple, but it is not usually best practice to do " +"this." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:235 +msgid "" +"This tutorial made an assumption that the node it would be attached to " +"contained a child node which is an :ref:`AnimatedSprite " +"`. There is also the assumption that this :ref:" +"`AnimatedSprite ` has at least two animations, the " +"idle and run animations. Also, the top-level node is assumed to be a :ref:" +"`KinematicBody2D `." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:242 +msgid "" +"The zip file of the llama used in this tutorial is :download:`here `. The source was from `piskel_llama `_, but I couldn't find " +"the original creator information on that page though... There is also a good " +"tutorial for sprite animation already. See :ref:`2D Sprite Animation " +"`." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:247 +msgid "" +"So, the only script that must be attached is ``persistent_state.gd``, which " +"should be attached to the top node of the player, which is a :ref:" +"`KinematicBody2D `." +msgstr "" + +#: ../../docs/tutorials/misc/state_design_pattern.rst:254 +msgid "" +"Now the player has utilized the state design pattern to implement its two " +"different states. The nice part of this pattern is that if one wanted to add " +"another state, then it would involve creating another class that need only " +"focus on itself and how it changes to another state. Each state is " +"functionally separated and instantiated dynamically." +msgstr "" + #: ../../docs/tutorials/debug/index.rst:2 msgid "Debug" msgstr "" @@ -70550,7 +71333,7 @@ msgstr "" #: ../../docs/development/compiling/compiling_for_windows.rst:40 #: ../../docs/development/compiling/compiling_for_x11.rst:25 -#: ../../docs/development/compiling/compiling_for_osx.rst:19 +#: ../../docs/development/compiling/compiling_for_osx.rst:27 #: ../../docs/development/compiling/compiling_for_android.rst:37 #: ../../docs/development/compiling/compiling_for_ios.rst:15 #: ../../docs/development/compiling/compiling_for_uwp.rst:29 @@ -70856,7 +71639,6 @@ msgid "Compiling for X11 (Linux, \\*BSD)" msgstr "" #: ../../docs/development/compiling/compiling_for_x11.rst:11 -#: ../../docs/development/compiling/compiling_for_osx.rst:11 msgid "" "For compiling under Linux or other Unix variants, the following is required:" msgstr "" @@ -70898,7 +71680,6 @@ msgid "*Optional* - libudev (build with ``udev=yes``)" msgstr "" #: ../../docs/development/compiling/compiling_for_x11.rst:23 -#: ../../docs/development/compiling/compiling_for_osx.rst:17 msgid "*Optional* - yasm (for WebM SIMD optimizations)" msgstr "" @@ -70931,7 +71712,6 @@ msgid "**Solus**" msgstr "" #: ../../docs/development/compiling/compiling_for_x11.rst:87 -#: ../../docs/development/compiling/compiling_for_osx.rst:25 msgid "" "Start a terminal, go to the root dir of the engine source code and type:" msgstr "" @@ -70945,7 +71725,6 @@ msgid "" msgstr "" #: ../../docs/development/compiling/compiling_for_x11.rst:97 -#: ../../docs/development/compiling/compiling_for_osx.rst:31 msgid "" "If all goes well, the resulting binary executable will be placed in the \"bin" "\" subdirectory. This executable file contains the whole engine and runs " @@ -70962,12 +71741,20 @@ msgid "" "not build." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:118 +#: ../../docs/development/compiling/compiling_for_x11.rst:117 +msgid "" +"If you are compiling Godot with GCC, you can make the binary even smaller " +"and faster by adding the SCons option ``use_lto=yes``. As link-time " +"optimization is a memory-intensive process, this will require about 3 GB of " +"available RAM while compiling." +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:123 #: ../../docs/development/compiling/compiling_for_web.rst:23 msgid "Building export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:120 +#: ../../docs/development/compiling/compiling_for_x11.rst:125 msgid "" "Linux binaries usually won't run on distributions that are older than the " "distribution they were built on. If you wish to distribute binaries that " @@ -70976,133 +71763,192 @@ msgid "" "a suitable build environment." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:128 +#: ../../docs/development/compiling/compiling_for_x11.rst:133 msgid "" "To build X11 (Linux, \\*BSD) export templates, run the build system with the " "following parameters:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:131 +#: ../../docs/development/compiling/compiling_for_x11.rst:136 msgid "(32 bits)" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:138 +#: ../../docs/development/compiling/compiling_for_x11.rst:143 msgid "(64 bits)" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:145 +#: ../../docs/development/compiling/compiling_for_x11.rst:150 msgid "" "Note that cross-compiling for the opposite bits (64/32) as your host " "platform is not always straight-forward and might need a chroot environment." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:148 +#: ../../docs/development/compiling/compiling_for_x11.rst:153 msgid "" "To create standard export templates, the resulting files must be copied to:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:154 +#: ../../docs/development/compiling/compiling_for_x11.rst:159 msgid "" "and named like this (even for \\*BSD which is seen as \"Linux X11\" by " "Godot):" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:163 +#: ../../docs/development/compiling/compiling_for_x11.rst:168 msgid "" "However, if you are writing your custom modules or custom C++ code, you " "might instead want to configure your binaries as custom export templates " "here:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:169 +#: ../../docs/development/compiling/compiling_for_x11.rst:174 msgid "" "You don't even need to copy them, you can just reference the resulting files " "in the ``bin/`` directory of your Godot source folder, so the next time you " "build, you automatically have the custom templates referenced." msgstr "" +#: ../../docs/development/compiling/compiling_for_x11.rst:179 +msgid "Using Clang and LLD for faster development" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:181 +msgid "" +"You can also use Clang and LLD to build Godot. This has two upsides compared " +"to the default GCC + GNU ld setup:" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:184 +msgid "" +"LLD links Godot significantly faster compared to GNU ld or gold. This leads " +"to faster iteration times." +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:186 +msgid "Clang tends to give more useful error messages compared to GCC." +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:188 +msgid "" +"To do so, install Clang and the ``lld`` package from your distribution's " +"package manager then use the following SCons command::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:193 +msgid "" +"It's still recommended to use GCC for production builds as they can be " +"compiled using link-time optimization, making the resulting binaries smaller " +"and faster." +msgstr "" + #: ../../docs/development/compiling/compiling_for_osx.rst:4 msgid "Compiling for macOS" msgstr "" +#: ../../docs/development/compiling/compiling_for_osx.rst:11 +msgid "For compiling under macOS, the following is required:" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:13 +msgid "Python 3.5+ (recommended) or Python 2.7+." +msgstr "" + #: ../../docs/development/compiling/compiling_for_osx.rst:14 -msgid "Python 2.7+ or Python 3.5+" +msgid "`SCons `_ build system." msgstr "" #: ../../docs/development/compiling/compiling_for_osx.rst:15 -msgid "SCons build system" +msgid "" +"`Xcode `_ (or the more " +"lightweight Command Line Tools for Xcode)." msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:16 -msgid "Xcode (or the more lightweight Command Line Tools for Xcode)" +#: ../../docs/development/compiling/compiling_for_osx.rst:17 +msgid "" +"*Optional* - `yasm `_ (for WebM SIMD " +"optimizations)." msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:36 +#: ../../docs/development/compiling/compiling_for_osx.rst:19 +msgid "" +"If you have `Homebrew `_ installed, you can easily install " +"SCons and yasm using the following command::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:24 +msgid "" +"Installing Homebrew will also fetch the Command Line Tools for Xcode " +"automatically if you don't have them already." +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:33 +msgid "" +"Start a terminal, go to the root directory of the engine source code and " +"type::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:37 +msgid "" +"If all goes well, the resulting binary executable will be placed in the " +"``bin/`` subdirectory. This executable file contains the whole engine and " +"runs without any dependencies. Executing it will bring up the project " +"manager." +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:42 msgid "" "To create an .app like in the official builds, you need to use the template " -"located in ``misc/dist/osx_tools.app``. Typically, for a \".64\" optimised " -"binary built with `scons p=osx target=release_debug`:" +"located in ``misc/dist/osx_tools.app``. Typically, for an optimized editor " +"binary built with ``scons p=osx target=release_debug``::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:48 -msgid "Compiling for 32 and 64-bit" +#: ../../docs/development/compiling/compiling_for_osx.rst:52 +msgid "Cross-compiling for macOS from Linux" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:50 -msgid "" -"All macOS versions after 10.6 are 64-bit exclusive, so the executable will " -"be a \".64\" file by default for most users. If you would like to compile a " -"\".fat\" executable which contains both 32 and 64-bit code, you can do so by " -"specifying the bits in the scons command like so:" -msgstr "" - -#: ../../docs/development/compiling/compiling_for_osx.rst:60 -msgid "Cross-compiling" -msgstr "" - -#: ../../docs/development/compiling/compiling_for_osx.rst:62 +#: ../../docs/development/compiling/compiling_for_osx.rst:54 msgid "" "It is possible to compile for macOS in a Linux environment (and maybe also " -"in Windows with Cygwin). For that you will need `OSXCross `__ to be able to use macOS as target. First, " -"follow the instructions to install it:" +"in Windows using the Windows Subsystem for Linux). For that, you'll need to " +"install `OSXCross `__ to be able " +"to use macOS as a target. First, follow the instructions to install it:" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:67 +#: ../../docs/development/compiling/compiling_for_osx.rst:59 msgid "" -"Clone the `OSXCross repository ` " -"somewhere on your machine (or download a zip file and extract it somewhere), " -"e.g.:" +"Clone the `OSXCross repository `__ " +"somewhere on your machine (or download a ZIP file and extract it somewhere), " +"e.g.::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:75 +#: ../../docs/development/compiling/compiling_for_osx.rst:65 msgid "" "Follow the instructions to package the SDK: https://github.com/tpoechtrager/" "osxcross#packaging-the-sdk" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:77 +#: ../../docs/development/compiling/compiling_for_osx.rst:67 msgid "" "Follow the instructions to install OSXCross: https://github.com/tpoechtrager/" "osxcross#installation" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:80 +#: ../../docs/development/compiling/compiling_for_osx.rst:70 msgid "" "After that, you will need to define the ``OSXCROSS_ROOT`` as the path to the " "OSXCross installation (the same place where you cloned the repository/" -"extracted the zip), e.g.:" +"extracted the zip), e.g.::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:88 -msgid "Now you can compile with SCons like you normally would:" +#: ../../docs/development/compiling/compiling_for_osx.rst:76 +msgid "Now you can compile with SCons like you normally would::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:94 +#: ../../docs/development/compiling/compiling_for_osx.rst:80 msgid "" "If you have an OSXCross SDK version different from the one expected by the " "SCons buildsystem, you can specify a custom one with the ``osxcross_sdk`` " -"argument:" +"argument::" msgstr "" #: ../../docs/development/compiling/compiling_for_android.rst:4 @@ -71200,9 +72046,10 @@ msgstr "" #: ../../docs/development/compiling/compiling_for_android.rst:63 msgid "" -"To set those environment variables on Windows, press **Windows + R**, type " -"\"control system\", then click on **Advanced system settings** in the left " -"pane, then click on **Environment variables** on the window that appears." +"To set those environment variables on Windows, press :kbd:`Windows + R`, " +"type \"control system\", then click on **Advanced system settings** in the " +"left pane, then click on **Environment variables** on the window that " +"appears." msgstr "" #: ../../docs/development/compiling/compiling_for_android.rst:68 @@ -71845,9 +72692,9 @@ msgstr "" #: ../../docs/development/compiling/compiling_for_uwp.rst:142 msgid "" -"Now you can just run the project and your app should open. You can use also " -"the \"Start Without Debugging\" from the \"Debug\" menu (Ctrl+F5) to make it " -"launch faster." +"Now you can just run the project and your app should open. You can also use " +"the \"Start Without Debugging\" option from the \"Debug\" menu (or press :" +"kbd:`Ctrl + F5`) to make it launch faster." msgstr "" #: ../../docs/development/compiling/compiling_for_web.rst:4 @@ -73035,18 +73882,19 @@ msgid "" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:273 -msgid "Now open cloned godot folder in VS Code (File > Open Folder...)" +msgid "Open cloned godot folder in VS Code with ``File > Open Folder...``" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:275 msgid "" -"In order to build the project, we need two configuration files: *launch." +"In order to build the project, you need two configuration files: *launch." "json* and *tasks.json*. To create them:" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:278 msgid "" -"Open Debug view (Ctrl + Shift + D) and select cogwheel with an orange dot:" +"Open *Debug* view by pressing :kbd:`Ctrl + Shift + D` and select cogwheel " +"with an orange dot:" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:282 @@ -73066,9 +73914,9 @@ msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:290 msgid "" -"Create *tasks.json* by starting the Debug process (F5). VS Code will show a " -"dialog with a *Configure Task* button. Tap it and select *Create tasks.json " -"file from template*, then select *Others*" +"Create *tasks.json* by starting the Debug process with :kbd:`F5`. VS Code " +"will show a dialog with a *Configure Task* button. Tap it and select *Create " +"tasks.json file from template*, then select *Others*" msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:292 @@ -73097,7 +73945,7 @@ msgstr "" #: ../../docs/development/cpp/configuring_an_ide.rst:308 msgid "" -"`Android Studio `_ is a `Jetbrain " +"`Android Studio `_ is a `JetBrains " "`_ IDE for Android development. It has a feature-" "rich editor which supports Java and C/C++, so it can be used for development " "of the Godot core engine, and Android platform codebases." @@ -73864,8 +74712,8 @@ msgstr "" #: ../../docs/development/cpp/object_class.rst:233 #: ../../docs/development/cpp/custom_resource_format_loaders.rst:18 #: ../../docs/development/cpp/custom_resource_format_loaders.rst:39 -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:213 -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:247 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:303 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:356 #: ../../docs/development/cpp/custom_godot_servers.rst:19 #: ../../docs/development/cpp/custom_godot_servers.rst:316 msgid "References" @@ -74186,22 +75034,70 @@ msgid "" msgstr "" #: ../../docs/development/cpp/custom_modules_in_cpp.rst:261 -msgid "Improving the build system for development" +msgid "Customizing module types initialization" msgstr "" #: ../../docs/development/cpp/custom_modules_in_cpp.rst:263 msgid "" +"Modules can interact with other built-in engine classes during runtime and " +"even affect the way core types are initialized. So far, we've been using " +"``register_summator_types`` as a way to bring in module classes to be " +"available within the engine." +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:268 +msgid "" +"A crude order of the engine setup can be summarized as a list of the " +"following type registration methods:" +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:287 +msgid "" +"Our ``Summator`` class is initialized during the ``register_module_types()`` " +"call. Imagine that we need to satisfy some common module run-time dependency " +"(like singletons), or allow us to override existing engine method callbacks " +"before they can be assigned by the engine itself. In that case, we want to " +"ensure that our module classes are registered *before* any other built-in " +"type." +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:293 +msgid "" +"This is where we can define an optional ``preregister_summator_types()`` " +"method which will be called before anything else during the " +"``preregister_module_types()`` engine setup stage." +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:297 +msgid "" +"We now need to add this method to ``register_types`` header and source files:" +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:309 +msgid "" +"Unlike other register methods, we have to explicitly define " +"``MODULE_SUMMATOR_HAS_PREREGISTER`` to let the build system know what " +"relevant method calls to include at compile time. The module's name has to " +"be converted to uppercase as well." +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:337 +msgid "Improving the build system for development" +msgstr "" + +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:339 +msgid "" "So far we defined a clean and simple SCsub that allows us to add the sources " "of our new module as part of the Godot binary." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:266 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:342 msgid "" "This static approach is fine when we want to build a release version of our " "game given we want all the modules in a single binary." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:269 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:345 msgid "" "However the trade-off is every single change means a full recompilation of " "the game. Even if SCons is able to detect and recompile only the file that " @@ -74209,13 +75105,13 @@ msgid "" "a long and costly part." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:274 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:350 msgid "" "The solution to avoid such a cost is to build our own module as a shared " "library that will be dynamically loaded when starting our game's binary." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:307 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:383 msgid "" "Once compiled, we should end up with a ``bin`` directory containing both the " "``godot*`` binary and our ``libsummator*.so``. However given the .so is not " @@ -74223,13 +75119,13 @@ msgid "" "it during runtime with the ``LD_LIBRARY_PATH`` environ variable:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:317 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:393 msgid "" "**note**: Pay attention you have to ``export`` the environ variable " "otherwise you won't be able to play your project from within the editor." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:320 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:396 msgid "" "On top of that, it would be nice to be able to select whether to compile our " "module as shared library (for development) or as a part of the Godot binary " @@ -74237,23 +75133,23 @@ msgid "" "using the `ARGUMENT` command:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:352 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:428 msgid "" "Now by default ``scons`` command will build our module as part of Godot's " "binary and as a shared library when passing ``summator_shared=yes``." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:355 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:431 msgid "" "Finally you can even speedup build further by explicitly specifying your " "shared module as target in the scons command:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:363 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:439 msgid "Writing custom documentation" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:365 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:441 msgid "" "Writing documentation may seem like a boring task, but it is highly " "recommended to document your newly created module in order to make it easier " @@ -74262,22 +75158,22 @@ msgid "" "someone else, so be kind to your future self!" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:371 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:447 msgid "There are several steps in order to setup custom docs for the module:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:373 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:449 msgid "" "Make a new directory in the root of the module. The directory name can be " "anything, but we'll be using the ``doc_classes`` name throughout this " "section." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:376 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:452 msgid "Append the following code snippet to ``config.py``:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:388 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:464 msgid "" "The ``get_doc_classes()`` method is necessary for the build system to know " "which documentation classes of the module must be merged, since the module " @@ -74286,18 +75182,18 @@ msgid "" "one class, append those as well." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:394 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:470 msgid "" "The ``get_doc_path()`` method is used by the build system to determine the " "location of the docs. In our case, they will be located in the " "``doc_classes`` directory." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:398 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:474 msgid "Run command:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:404 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:480 msgid "" "This will dump the engine API reference to the given ```` in XML " "format. Notice that you'll need to configure your ``PATH`` to locate Godot's " @@ -74305,17 +75201,17 @@ msgid "" "might encounter an error similar to the following:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:414 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:490 msgid "Get generated doc file from ``godot/doc/classes/ClassName.xml``" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:416 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:492 msgid "" "Copy this file to ``doc_classes``, optionally edit it, then compile the " "engine." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:418 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:494 msgid "" "The build system will fetch the documentation files from the ``doc_classes`` " "directory and merge them with the base types. Once the compilation process " @@ -74323,95 +75219,95 @@ msgid "" "documentation system." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:422 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:498 msgid "" "In order to keep documentation up-to-date, all you'll have to do is simply " "modify one of the ``ClassName.xml`` files and recompile the engine from now " "on." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:428 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:504 msgid "Adding custom editor icons" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:430 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:506 msgid "" "Similarly to how you can write self-contained documentation within a module, " "you can also create your own custom icons for classes to appear in the " "editor." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:433 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:509 msgid "" "For the actual process of creating editor icons to be integrated within the " "engine, please refer to :ref:`doc_editor_icons` first." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:436 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:512 msgid "Once you've created your icon(s), proceed with the following steps:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:438 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:514 msgid "" "Make a new directory in the root of the module named ``icons``. This is the " "default path for the engine to look for module's editor icons." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:441 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:517 msgid "" "Move your newly created ``svg`` icons (optimized or not) into that folder." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:443 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:519 msgid "" "Recompile the engine and run the editor. Now the icon(s) will appear in " "editor's interface where appropriate." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:446 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:522 msgid "" "If you'd like to store your icons somewhere else within your module, add the " "following code snippet to ``config.py`` to override the default path:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:455 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:531 msgid "Summing up" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:457 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:533 msgid "Remember to:" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:459 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:535 msgid "use ``GDCLASS`` macro for inheritance, so Godot can wrap it" msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:460 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:536 msgid "" "use ``_bind_methods`` to bind your functions to scripting, and to allow them " "to work as callbacks for signals." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:463 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:539 msgid "" "But this is not all, depending what you do, you will be greeted with some " "(hopefully positive) surprises." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:466 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:542 msgid "" "If you inherit from :ref:`class_Node` (or any derived node type, such as " "Sprite), your new class will appear in the editor, in the inheritance tree " "in the \"Add Node\" dialog." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:469 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:545 msgid "" "If you inherit from :ref:`class_Resource`, it will appear in the resource " "list, and all the exposed properties can be serialized when saved/loaded." msgstr "" -#: ../../docs/development/cpp/custom_modules_in_cpp.rst:472 +#: ../../docs/development/cpp/custom_modules_in_cpp.rst:548 msgid "" "By this same logic, you can extend the Editor and almost any area of the " "engine." @@ -74528,9 +75424,10 @@ msgid ":ref:`ResourceLoader`" msgstr "" #: ../../docs/development/cpp/custom_resource_format_loaders.rst:21 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:358 msgid "" "`core/io/resource_loader.cpp `__" +"master/core/io/resource_loader.cpp>`_" msgstr "" #: ../../docs/development/cpp/custom_resource_format_loaders.rst:26 @@ -74564,7 +75461,7 @@ msgstr "" #: ../../docs/development/cpp/custom_resource_format_loaders.rst:41 msgid "" "`core/io/image_loader.h `__" +"core/io/image_loader.h>`_" msgstr "" #: ../../docs/development/cpp/custom_resource_format_loaders.rst:45 @@ -74590,71 +75487,85 @@ msgid "" "handle data serialization." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:110 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:109 +msgid "Creating a ResourceFormatSaver" +msgstr "" + +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:111 +msgid "" +"If you'd like to be able to edit and save a resource, you can implement a " +"``ResourceFormatSaver``:" +msgstr "" + +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:158 msgid "Creating custom data types" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:112 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:160 msgid "" "Godot may not have a proper substitute within its :ref:`doc_core_types` or " "managed resources. Godot needs a new registered data type to understand " "additional binary formats such as machine learning models." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:116 -msgid "Here is an example of how to create a custom datatype" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:164 +msgid "Here is an example of creating a custom datatype:" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:174 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:262 msgid "Considerations" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:176 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:264 msgid "" "Some libraries may not define certain common routines such as IO handling. " "Therefore, Godot call translations are required." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:179 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:267 msgid "" "For example, here is the code for translating ``FileAccess`` calls into " "``std::istream``." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:215 -msgid "`istream `__" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:305 +msgid "`istream `_" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:216 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:306 msgid "" "`streambuf `__" +"kw=streambuf>`_" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:217 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:307 msgid "" "`core/io/fileaccess.h `__" +"os/file_access.h>`_" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:220 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:310 msgid "Registering the new file format" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:222 +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:312 msgid "" "Godot registers ``ResourcesFormatLoader`` with a ``ResourceLoader`` handler. " "The handler selects the proper loader automatically when ``load`` is called." msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:249 -msgid "" -"`core/io/resource_loader.cpp `__" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:361 +msgid "Loading it on GDScript" msgstr "" -#: ../../docs/development/cpp/custom_resource_format_loaders.rst:252 -msgid "Loading it on GDScript" +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:363 +msgid "" +"Save a file called ``demo.json`` with the following contents and place it in " +"the project's root folder:" +msgstr "" + +#: ../../docs/development/cpp/custom_resource_format_loaders.rst:379 +msgid "Then attach the following script to any node::" msgstr "" #: ../../docs/development/cpp/custom_audiostreams.rst:4 @@ -75927,6 +76838,354 @@ msgid "" "GitHub repository. See :ref:`doc_documentation_guidelines` for more details." msgstr "" +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:4 +msgid "Best practices for engine contributors" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:9 +msgid "" +"Godot has a large amount of users who have the ability to contribute, given " +"the project itself is aimed mainly at users with the ability to do " +"programming. Despite this, not all of them have the same level of experience " +"working in large projects or in software engineering, which can lead to " +"common misunderstandings and bad practices during the process of " +"contributing code to the project." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:14 +msgid "" +"The scope of this document is to be a list of best practices for " +"contributors to follow, as well as to creating a language they can use to " +"refer to common situations that arise in the process of submitting their " +"contributions." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:16 +msgid "" +"While some may find it useful to extend this to general software " +"development, our intention is to just restrict to situations that are most " +"common in our project." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:18 +msgid "" +"Contributions are most of the time categorized as bug fixes, enhancements or " +"new features. To abstract this idea, we will call them *Solutions*, because " +"they always seek to solve something that can be described as a *Problem*." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:21 +msgid "Best Practices" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:24 +msgid "#1: The problem always comes first" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:26 +msgid "" +"Many contributors are extremely creative and just enjoy the process of " +"designing abstract data structures, creating nice user interfaces,or simply " +"love programming. Whatever the case may be, they come up with cool ideas, " +"which may not be actually solving any actual problems." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:30 +msgid "" +"These are usually called *Solutions in search of a problem*. In an ideal " +"world, they would not be harmful but, in reality, code takes time to write, " +"takes space as source and binary and requires maintenance once it exists. " +"Avoiding the addition of anything unnecessary is always considered a good " +"practice in software development." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:33 +msgid "#2: The problem has to exist" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:35 +msgid "" +"This is a variation of the previous practice. I believe most developers " +"agree that adding anything unnecessary is not a good idea, but what " +"constitutes what is necessary and what isn't?" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:39 +msgid "" +"The answer to this question is that the problem needs to *exist*. It must " +"not be speculation or a belief. The user must be using the software as " +"intended to create something they *need*. In this process, the user may " +"stumble into a problem that requires a solution in order to continue, or in " +"order to achieve greater productivity. In this case, *a solution is needed*." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:41 +msgid "" +"Believing that problems may arise in the future and that the software needs " +"to be ready to solve them by the time they appear is called *\"Future " +"proofing\"* and its characterized by lines of thought such as:" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:43 +msgid "I think it would be useful for users to..." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:44 +msgid "I think users will eventually need to..." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:46 +msgid "" +"This is generally considered a bad habit, because trying to solve problems " +"that *don't actually exist* in the present will very often lead to code that " +"will be written but never used, or to code that is considerably more complex " +"to use and maintain than it needs to be." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:49 +msgid "#3: The problem has to be complex or frequent" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:51 +msgid "" +"Software is designed to solve problems, but we can't expect it to solve " +"*every problem that exists under the sun*. As a game engine, Godot will " +"solve problems for you, so it helps you to make games better and faster, but " +"it won't make the *entire game* for you. A line must be drawn somewhere." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:55 +msgid "" +"Whether a problem is worth solving is determined by the difficulty the user " +"has to work around it. This difficulty can be expressed as:" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:57 +msgid "The complexity of the problem" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:58 +msgid "The frequency the problem" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:60 +msgid "" +"If the problem is *too complex* for most users to solve, the software must " +"offer a ready made solution for it. Likewise, if the problem is easy for the " +"user to workaround, offering such a solution is unnecessary and it's up to " +"the user to do it." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:62 +msgid "" +"The exception, however, is when the user stumbles into this problem " +"*frequently enough* that having to do the simple solution every time becomes " +"an annoyance. In this case, the software must offer a solution to simplify " +"this use case." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:64 +msgid "" +"In our experience, in most cases it's usually obvious to tell when a problem " +"is complex or frequent, but cases may arise where drawing this line is " +"difficult. This is why discussing with other developers (next point) is " +"always advised." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:67 +msgid "#4: The solution must be discussed with others" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:69 +msgid "" +"It is often the case that, when users stumble upon problems, they are only " +"immersed in their own project, so they will naturally try to solve the " +"problem from their own perspective, thinking only about their use case." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:71 +msgid "" +"Because of this, user proposed solutions don't always contemplate other use " +"cases that developers are often aware of, so they are often biased towards " +"their own requirements." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:75 +msgid "" +"For developers, the perspective is different. They may find the user's " +"problem too unique to justify a solution (instead of an user workaround), or " +"maybe they will suggest a partial (usually simpler or lower level) solution " +"that applies to a wider range of known problems, and leave the rest of the " +"solution up to the user." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:77 +msgid "" +"In any case, before attempting a contribution, it is important to discuss " +"the actual problems with the other developers or contributors, so a better " +"agreement on implementation can be reached." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:79 +msgid "" +"The only exception, in this case, is when an area of code has a clear owner " +"(agreed by the other contributors), who talks to users directly and has the " +"most knowledge to implement a solution directly." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:82 +msgid "#5: To each problem, its own solution" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:84 +msgid "" +"For programmers, it is always a most enjoyable challenge to find the most " +"optimal solutions to problems. Things, however, may go overboard sometimes " +"and programmers will try to come up with solutions that solve as many " +"problems as possible." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:86 +msgid "" +"The situation will often take a turn for the worse when, in order to make " +"this solution appear even more fantastic and flexible, the pure speculation-" +"based problems (as described in #2) also make their appearance on stage." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:90 +msgid "" +"The main problem is that, in reality, it rarely works this way. Most of the " +"time, just writing an individual solution to each problem results in code " +"that is simpler and more maintainable." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:92 +msgid "" +"Additionally, solutions that target individual problems are better for the " +"users, as they find something that does exactly what they need, without " +"having to learn and remember a more complex system they will only need for " +"simple tasks." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:94 +msgid "" +"Big and flexible solutions also have an additional drawback which is that, " +"over time, they rarely are flexible enough for all users, which keep " +"requesting more functions added (and making the API and codebase more and " +"more complex)." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:97 +msgid "#6: Cater to common use cases, leave the door open for the rare ones" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:99 +msgid "" +"This is a continuation of the previous point, which further explains why " +"this way of thinking and designing software is preferred." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:101 +msgid "" +"As mentioned before (in point #2), it is very difficult for us (as human " +"beings who design software) to actually understand all future user needs. " +"Trying to write very flexible structures that cater to many use cases at " +"once is often a mistake." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:103 +msgid "" +"We may come up with something we believe is brilliant, but when it's " +"actually used, we will find that users will never even use half of it, or " +"that they will require features that don't quite accommodate our original " +"design, forcing us to either throw it away or make it even more complex." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:105 +msgid "" +"The question is then, how to design software that gives users what *we know " +"they need*, but that is flexible enough to allow them to do *what we don't " +"know they might need* in the future?" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:109 +msgid "" +"The answer to this question is that, to ensure users still can do what they " +"want to do, we need to give them access to a *low level API* that they can " +"use to achieve what they want, even if it's more work for them because it " +"means reimplementing some of the logic that already exists." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:111 +msgid "" +"In real-life scenarios, these use cases will be at most rare and uncommon " +"anyway, so it makes sense a custom solution needs to be written. This is why " +"it's important to still provide users the basic building blocks to do it." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:114 +msgid "#7: Solutions must be local" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:116 +msgid "" +"When looking for a solution to a problem, be it implementing a new feature " +"or fixing a bug, sometimes the easiest path is to add data or a new function " +"in the core layers of code." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:118 +msgid "" +"The main problem here is, adding something to the core layers that will only " +"be used from a single location far away will not only make the code more " +"difficult to follow (split in two), but also make the core API larger, more " +"complex, more difficult to understand in general." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:120 +msgid "" +"This is bad, because readability and cleanness of core APIs is always of " +"extreme importance given how much code relies from it, and because it's key " +"for new contributors as a starting point to learning the codebase." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:126 +msgid "" +"The common reasoning for wanting to do this is that it's usually less code " +"to simply add a hack in the core layers." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:128 +msgid "" +"Despite this, this practice is not advised. Generally, the code for a " +"solution should be closer to where the problem originates, even if it " +"involves more code, duplicated, more complex or is less efficient. More " +"creativity might be needed, but this path is always the advised one." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:131 +msgid "#8: Don't use complex canned solutions for simple problems" +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:133 +msgid "" +"Not every problem has a simple solution and, many times, the right choice is " +"to use a third party library to solve the problem." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:135 +msgid "" +"As Godot requires to be shipped in a large amount of platforms, we just " +"can't link libraries dynamically. Instead, we bundle them in our source tree." +msgstr "" + +#: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:139 +msgid "" +"As a result, we are very picky with what goes in, and we tend to prefer " +"smaller libraries (in fact, single header ones are our favorite). Only in " +"cases where there is no other choice we end up bundling something larger." +msgstr "" + #: ../../docs/community/contributing/pr_workflow.rst:4 msgid "Pull request workflow" msgstr "" @@ -77353,7 +78612,7 @@ msgid "" msgstr "" #: ../../docs/community/contributing/docs_writing_guidelines.rst:36 -msgid "7 rules for a clear english" +msgid "7 rules for clear English" msgstr "" #: ../../docs/community/contributing/docs_writing_guidelines.rst:41 @@ -77741,22 +79000,22 @@ msgid "" "'this' or \\`this\\` with ``[code]this[/code]``." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:445 -msgid "Common vocabulary to use in godot's docs" +#: ../../docs/community/contributing/docs_writing_guidelines.rst:448 +msgid "Common vocabulary to use in Godot's documentation" msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:447 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:450 msgid "" "The developers chose some specific words to refer to areas of the interface. " "They're used in the sources, in the documentation, and you should always use " "them instead of synonyms, so the users know what you're talking about." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:455 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:458 msgid "Overview of the interface and common vocabulary" msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:457 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:460 msgid "" "In the top left corner of the editor lie the ``main menus``. In the center, " "the buttons change the ``workspace``. And together the buttons in the top " @@ -77765,7 +79024,7 @@ msgid "" "``tools`` inside the ``toolbar``." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:463 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:466 msgid "" "The tabs or dockable panels on either side of the viewport are ``docks``. " "You have the ``FileSystem dock``, the ``Scene dock`` that contains your " @@ -77774,13 +79033,13 @@ msgid "" "``tabs``: the ``Scene tab``, the ``Node tab``..." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:469 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:472 msgid "" "The Animation, Debugger, etc. at the bottom of the viewport are ``panels``. " "Together they make up the ``bottom panels``." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:472 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:475 msgid "" "Foldable areas of the Inspector are ``sections``. The node's parent class " "names, which you can't fold, are ``Classes`` e.g. the ``KinematicBody2D " @@ -77788,45 +79047,89 @@ msgid "" "``position`` or ``modulate color`` are both ``properties``." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:479 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:482 +msgid "Keyboard shortcut guidelines" +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:484 +msgid "" +"Keyboard and mouse shortcuts should make use of the ``:kbd:`` tag, which " +"allows shortcuts to stand out from the rest of the text and inline code. Use " +"the compact form for modifier keys (:kbd:`Ctrl`/:kbd:`Cmd`) instead of their " +"spelled out form (:kbd:`Control`/:kbd:`Command`). For combinations, use the " +"``+`` symbol with a space on either side of the symbol." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:490 +msgid "" +"Make sure to mention shortcuts that differ on macOS compared to other " +"platforms. On macOS, ``Cmd`` often replaces ``Ctrl`` in keyboard shortcuts." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:493 +msgid "" +"Try to integrate the shortcut into sentences the best you can. Here are some " +"examples with the ``:kbd:`` tag left as-is for better visibility:" +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:496 +msgid "" +"Press ``:kbd:`Ctrl + Alt + T``` to toggle the panel (``:kbd:`Cmd + Alt + " +"T``` on macOS)." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:497 +msgid "" +"Press ``:kbd:`Space``` and hold the left mouse button to pan in the 2D " +"editor." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:498 +msgid "Press ``:kbd:`Shift + Up Arrow``` to move the node upwards by 8 pixels." +msgstr "" + +#: ../../docs/community/contributing/docs_writing_guidelines.rst:501 msgid "Image contribution guidelines" msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:481 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:503 msgid "" "A significant part of the documentation is images, and there are several " "important guidelines to follow." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:484 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:506 msgid "" "First, you should always be using the default editor theme and text when " "taking screenshots." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:486 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:509 msgid "" -"For 3D screenshots use 4xMSAA, enable anisotropic filtering on the projects " -"textures, and set the anisotropic filter quality to 16x in Project Settings" +"To improve the apperance of 3D screenshots, use 4× MSAA, enable anisotropic " +"filtering on the project's textures, and set the anisotropic filter quality " +"to 16× in Project Settings." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:489 -msgid "Screenshot size should not exceed 1920x1080." +#: ../../docs/community/contributing/docs_writing_guidelines.rst:513 +msgid "" +"Screenshot sizes should not exceed 1920×1080 to ensure fast loading on " +"slower connections." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:491 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:516 msgid "" "When you need to highlight an area of the editor to show something, like a " "button or option, use a 2 pixel thick outline without a bevel." msgstr "" -#: ../../docs/community/contributing/docs_writing_guidelines.rst:494 +#: ../../docs/community/contributing/docs_writing_guidelines.rst:519 msgid "" "Before you add or replace any images in the documentation, they should be " -"run through a png compressor to save size. The built in lossless compressor " -"in programs like Krita or Photoshop should be done. However you should also " -"use a lossy one, such as `pngquant `_ where almost no " -"image quality is lost during compression." +"run through a PNG compressor to save size. The built in lossless compressor " +"in programs like Krita or Photoshop should be enough. For heavier images, " +"also look into using a lossy compressor, such as `pngquant `_ where almost no image quality is lost during compression." msgstr "" #: ../../docs/community/contributing/updating_the_class_reference.rst:4 @@ -78573,7 +79876,7 @@ msgstr "" #: ../../docs/community/tutorials.rst:8 msgid "" "Think there is something missing here? Feel free to submit a `Pull Request " -"`_ as always." msgstr "" @@ -78608,119 +79911,131 @@ msgid "Video tutorials" msgstr "" #: ../../docs/community/tutorials.rst:22 -msgid "`Emilio `_" +msgid "" +"`Emilio `_ (2D, " +"GDScript and VisualScript)." msgstr "" #: ../../docs/community/tutorials.rst:23 msgid "" "`GDQuest `_" +"playlists>`_ (2D and 3D, GDScript, VisualScript and C#)." msgstr "" #: ../../docs/community/tutorials.rst:24 msgid "" "`Game Endeavor `_" +"videos>`_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:25 msgid "" "`Game from Scratch `_" +"v=iDEcP8Mc-7s&list=PLS9MbmO_ssyDk79j9ewONxV88fD5e_o5d>`_ (2D and 3D, " +"GDScript and C#)." msgstr "" #: ../../docs/community/tutorials.rst:26 msgid "" "`HeartBeast `_" +"m48fn2jlBu_0DRh7PvAt-GULEmd>`_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:27 msgid "" -"`Jeremy Bullock `_" +"`Jeremy Bullock `_ " +"(2D and 3D, GDScript, VisualScript and C#)." msgstr "" #: ../../docs/community/tutorials.rst:28 msgid "" "`KidsCanCode `__" +"playlists>`__ (2D and 3D, GDScript and VisualScript)." msgstr "" #: ../../docs/community/tutorials.rst:29 msgid "" "`Mister Taft Creates `_" +"list=PL4vbr3u7UKWqwQlvwvgNcgDL1p_3hcNn2>`_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:30 msgid "" "`Miziziziz `_" +"list=PLmugv6_kd0qN6AyjG245_Pdak4MXKUx88>`_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:31 msgid "" "`P1X / Krzysztof Jankowski `_" +"list=PLvDk7UKhld4xGPovdB4IFtAHYMYjx_-3K>`_ (3D)." msgstr "" #: ../../docs/community/tutorials.rst:32 msgid "" "`Pigdev `_" +"list=PLPMN4vCRFdordS3E-3zi0Hdh7pAsbWQ6a>`_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:33 -msgid "`Steincodes `__" +msgid "" +"`Steincodes `__ (2D, " +"GDScript and VisualScript)." msgstr "" #: ../../docs/community/tutorials.rst:34 msgid "" -"`Code with Tom `_" +"`TheBuffED `_ (2D, GDScript)." msgstr "" #: ../../docs/community/tutorials.rst:35 msgid "" -"`BornCG `_" +"`Code with Tom `_ (2D and 3D, GDScript)." msgstr "" -#: ../../docs/community/tutorials.rst:38 +#: ../../docs/community/tutorials.rst:36 +msgid "" +"`BornCG `_ (3D, GDScript)." +msgstr "" + +#: ../../docs/community/tutorials.rst:39 msgid "Text tutorials" msgstr "" -#: ../../docs/community/tutorials.rst:40 +#: ../../docs/community/tutorials.rst:41 msgid "`Godot Recipes by KidsCanCode `__" msgstr "" -#: ../../docs/community/tutorials.rst:41 +#: ../../docs/community/tutorials.rst:42 msgid "`Steincodes `__" msgstr "" -#: ../../docs/community/tutorials.rst:44 +#: ../../docs/community/tutorials.rst:45 msgid "Devlogs" msgstr "" -#: ../../docs/community/tutorials.rst:46 +#: ../../docs/community/tutorials.rst:47 msgid "" "`Andrea Catania (Physics & AI) `_" msgstr "" -#: ../../docs/community/tutorials.rst:47 +#: ../../docs/community/tutorials.rst:48 msgid "" "`Bastiaan Olij (AR & VR) `_" msgstr "" -#: ../../docs/community/tutorials.rst:52 +#: ../../docs/community/tutorials.rst:53 msgid "" "`awesome-godot: A curated list of resources by Calinou `_" msgstr "" -#: ../../docs/community/tutorials.rst:53 +#: ../../docs/community/tutorials.rst:54 msgid "" "`Zeef Godot Engine: A curated directory of resources by Andre Schmitz " "`_"